Pregunta

Si mi archivo gz no existe, ¿por qué no morir?

$ cat test.pl    
open(FILE, "zcat dummy.gz |") or die "DIE";

$ ./test.pl    
zcat: dummy.gz: No such file or directory

Si leo un archivo, normalmente, funciona como se espera:

$ cat test2.pl    
open(FILE, "dummy.gz") or die "DIE";

$ ./test2.pl    
DIE at ./test.pl line 2.
¿Fue útil?

Solución

Su open tiene éxito (ya que se ejecuta con éxito zcat), no recibirá el código de salida de zcat hasta que se cierra el descriptor de fichero sin embargo.

Es posible que desee comprobar si el archivo existe y es legible antes de empezar, sin embargo, por ejemplo.

die "unable to read file" unless (-f "dummy.gz" and -r "dummy.gz")

Otros consejos

Es posible que desee considerar el uso de PerlIO::gzip, por ejemplo.

use PerlIO::gzip;
open(FILE, '<:gzip', 'dummy.gz') or die $!;

En el segundo ejemplo, el archivo abierto por el Perl no existe, por lo que va a morir.

En el primer ejemplo, el comando llamado por Perl se ejecuta (con cualquier resultado), así que no hay razón para morir.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top