Pergunta

Se meu arquivo GZ não existir, por que não morre?

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

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

Se eu ler um arquivo normalmente, ele funciona como esperado:

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

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

Solução

Sua open é bem -sucedido (como executa com sucesso o ZCAT), você não terá zcatO código de saída está até fechar o descritor de arquivo.

Você pode verificar se o arquivo existe e é legível antes de começar, por exemplo.

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

Outras dicas

Você pode querer considerar usar PerlIO::gzip, por exemplo.

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

No seu segundo exemplo, o Arquivo aberto por Perl não existe, então ele morrerá.

No seu primeiro exemplo, o Comando chamado por Perl executa (com qualquer resultado), portanto não há razão para morrer.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top