Domanda

Se il mio file gz non esiste, perché non morire?

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

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

Se leggo un file normalmente, funziona come previsto:

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

$ ./test2.pl    
DIE at ./test.pl line 2.
È stato utile?

Soluzione

Il tuo open riesce (come viene eseguito correttamente zcat), non sarà possibile ottenere il codice di uscita del zcat finché non si chiude il descrittore di file però.

Si potrebbe voler controllare se il file esiste ed è leggibile prima di iniziare, però, ad es.

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

Altri suggerimenti

Si potrebbe voler considerare l'utilizzo PerlIO::gzip, ad es.

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

Nel vostro secondo esempio, il file aperto da perl non esiste, quindi morirà.

Nel vostro primo esempio, il Comando chiamato da perl esegue (con qualsiasi risultato), quindi non c'è alcuna ragione per morire.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top