如果我的GZ文件不存在,为什么没有死呢?

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

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

如果我读取文件通常,它按预期工作:

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

$ ./test2.pl    
DIE at ./test.pl line 2.
有帮助吗?

解决方案

open成功(因为它成功运行ZCAT),直到你关闭文件描述符,虽然你不会得到zcat的退出代码。

您可能要检查文件是否存在并且是可读的,你开始之前,虽然,如:

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

其他提示

您可能要考虑使用PerlIO::gzip,如:

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

在第二个例子中,在文件通过perl的不存在开,所以它会死亡。

在第一个例子中,通过perl的执行(与任何结果),所以没有理由死。

叫的命令
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top