题
如果我的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的强>执行(与任何结果),所以没有理由死。
叫的命令不隶属于 StackOverflow