• Publicidad

Abrir un archivo

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Abrir un archivo

Notapor mparrado8 » 2013-05-27 12:41 @570

¡Hola de nuevo! Lo que quiero es dar la opción de abrir un archivo y que si no lo encuentra te pida introducir un nuevo nombre.

Tengo esto, pero no funciona, si introduzco el nombre de un archivo que no encuentra, sale error y pide un nuevo nombre, pero luego al introducir el nuevo nombre, aunque sí lo encuentre y esté bien, sale error :" illegal division by 0"

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. unless ( open(DNAFILE, $dnafilename) )
  2. {
  3.     print "\n ERROR: No se puede abrir el archivo \"$dnafilename\"\n\n";
  4.     $dnafilename = <STDIN>;
  5. }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
mparrado8
Perlero nuevo
Perlero nuevo
 
Mensajes: 32
Registrado: 2013-04-10 12:58 @582

Publicidad

Re: Abrir un archivo

Notapor explorer » 2013-05-27 13:29 @603

¿Seguro que es en esas líneas donde se produce la división por cero? No creo... No veo nada raro... salvo que... ¿qué valor tiene $dnafilename la primera vez que entra en el bucle, en la primera condición? A lo peor, no tiene ningún valor, y por eso da ese error.

Y luego, después de leer el nombre de archivo desde el teclado, no le quitas los caracteres de fin de línea, con chomp(), aunque no esto no es importante: al usar la versión de open() de dos argumentos, Perl quita de forma automática los caracteres de espacio que estén por delante o por detrás del nombre.

Prueba con esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $dnafilename;
  2. do {
  3.     print "Introduzca el nombre del archivo a procesar (FIN para terminar): ";
  4.     chomp($dnafilename = readline);
  5.  
  6.     exit if $dnafilename eq 'FIN';
  7.  
  8.     unless (open DNAFILE, $dnafilename) {
  9.         print "ERROR: No puedo abrir [$dnafilename]: $!\n";          # informamos del error
  10.         $dnafilename = '';                                           # obligamos a repetir el bucle
  11.     }
  12. } until $dnafilename;                                                # repetimos hasta que tengamos un archivo bien abierto
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 28 invitados