我使用File::Slurp
read_file
和write_file
函数来更新文件内容。
现在我专注于添加错误处理。为此,我尝试对实际不存在的文件执行以下方法。
1) read_file($file) or die("file read failedn");
不工作。刚刚抛出状态:500软件错误。
2) try{ my @lines = read_file($file); } catch{ print "file cannot read";};
不工作
3) err_mode就像在http://search.cpan.org/~drolsky/File-Slurp-9999.13/lib/File/Slurp.pm#err_mode
。不工作。
File::Slurp
是坏主意吗?这个模块的文档似乎过时了,与行为不匹配(编辑:它在CPAN上是固定的,只是Fedora附带的版本仍然存在不一致)。如err_mode
中所述,错误时的默认行为是调用croak()
,而不是像read_file()
中提到的那样返回undef
。所以,是的,您要么必须使用err_mode => 'quiet'
来获得return-undef行为,要么使用try/catch块。正如你所说,这两种方法都不起作用,到底发生了什么?这两个对我来说都很好:
$ perl -MFile::Slurp -MTry::Tiny -e'try { $s=read_file("foo") } catch { die "bummer" };'
bummer at -e line 1.
$ perl -MFile::Slurp -e'$s=read_file("foo", err_mode => "quiet") or die "bummer";'
bummer at -e line 1.