Frage

Wenn meine gz-Datei existiert nicht, warum es nicht sterben?

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

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

Wenn ich eine Datei normalerweise lesen, funktioniert es wie erwartet:

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

$ ./test2.pl    
DIE at ./test.pl line 2.
War es hilfreich?

Lösung

Ihre open erfolgreich ist (wie es erfolgreich zcat läuft), werden Sie nicht zcat der Exit-Code erhalten, bis Sie den Dateideskriptor schließen though.

Sie können prüfen wollen, ob die Datei existiert und lesbar ist, bevor Sie jedoch beginnen, zum Beispiel.

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

Andere Tipps

Sie möchten mit PerlIO::gzip berücksichtigen, z. B.

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

In Ihrem zweiten Beispiel die Datei geöffnet von perl ist nicht vorhanden, so dass er sterben wird.

In Ihrem ersten Beispiel der Befehl aufgerufen durch perl ausführt (egal mit welchem ??Ergebnis), so gibt es keinen Grund zu sterben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top