如何正确处理File :: Slurp read_file上的错误?

时间:2015-10-22 04:02:55

标签: perl error-handling readfile slurp

我正在使用File::Slurp read_filewrite_file函数来更新文件内容。

现在我专注于为它添加错误处理。为此,我尝试对实际不存在的文件执行以下方法。

1)read_file($file) or die("file read failed\n");无效。只是抛出状态: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中一样。不工作。

使用Perl File::Slurp是不错的主意?

1 个答案:

答案 0 :(得分:0)

这个模块的文档似乎过时了并且与行为不匹配(编辑:它已经在CPAN上修复,只是Fedora附带的版本仍然存在不一致)。正如err_mode中所述,错误的默认行为是调用croak(),而不是如undef所述返回read_file()。所以,是的,您必须使用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.