-1

我正在使用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吗?

4

1 回答 1

0

该模块的文档似乎已经过时并且与行为不符(编辑:它已在 CPAN 上修复,只是 Fedora 附带的版本仍然存在不一致)。如下err_mode所述,错误的默认行为是调用,而不是如前所述的croak()返回。所以是的,你要么必须使用来获得 return-undef 行为,要么使用 try/catch 块。正如你所说,这些都不起作用,到底发生了什么?这两个对我来说都很好:undefread_file()err_mode => 'quiet'

$ 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.

于 2015-10-22T04:57:43.243 回答