Question

Si mon fichier gz n'existe pas, pourquoi ne pas mourir?

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

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

Si je lis un fichier normalement, il fonctionne comme prévu:

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

$ ./test2.pl    
DIE at ./test.pl line 2.
Était-ce utile?

La solution

Votre open réussit (comme il fonctionne avec succès zcat), vous ne recevrez pas le code de sortie de zcat jusqu'à ce que vous fermez le descripteur de fichier si.

Vous pouvez vérifier si le fichier existe et est lisible avant de commencer si, par exemple.

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

Autres conseils

Vous pouvez envisager d'utiliser PerlIO::gzip, par exemple.

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

Dans votre deuxième exemple, le fichier ouvert par perl n'existe pas, il va mourir.

Dans votre premier exemple, la commande appelé par perl (avec tout exécute résultat), donc il n'y a aucune raison de mourir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top