Perl 如何正确处理文件::Slurp read_文件上的错误?

Perl 如何正确处理文件::Slurp read_文件上的错误?,perl,error-handling,readfile,slurp,Perl,Error Handling,Readfile,Slurp,我正在使用File::Slurpread\u File和write\u File函数来更新文件内容 现在我的重点是添加错误处理。为此,我尝试对实际不存在的文件执行以下方法 1) 读取文件($file)或死亡(“文件读取失败\n”)不工作。刚刚抛出状态:500软件错误 2) 试试{my@lines=read_file($file)}catch{print“file无法读取”;}不工作 3) 错误模式与http://search.cpan.org/~drolsky/File-Slurp-9999.1

我正在使用
File::Slurp
read\u File
write\u File
函数来更新文件内容

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

1)
读取文件($file)或死亡(“文件读取失败\n”)不工作。刚刚抛出状态:500软件错误

2)
试试{my@lines=read_file($file)}catch{print“file无法读取”;}不工作

3) 错误模式与
http://search.cpan.org/~drolsky/File-Slurp-9999.13/lib/File/Slurp.pm#err_模式
。不工作


使用Perl
File::Slurp
是否不好?

此模块的文档似乎过时了,并且与行为不匹配(编辑:它在CPAN上已修复,只是Fedora附带的版本仍然存在不一致性)。如
err\u mode
中所述,出错时的默认行为是调用
croak()
,而不是返回
read\u file()
中提到的
undef
。因此,是的,您必须使用
err\u mode=>“quiet”
来获得返回的undef行为,或者使用try/catch块。正如你所说,这两个都不起作用,到底发生了什么?这两种方法对我都适用:

$perl-MFile::Slurp-MTry::Tiny-e'try{$s=read_file(“foo”)}catch{die“bummer”};'
在-e第1行出现故障。

$perl-MFile::Slurp-e'$s=read_file(“foo”,err_mode=>“quiet”)或die“bummer”;'

在-e第1行遇到麻烦。

您似乎希望向CGI客户端发送一个HTML文档,但我没有看到任何尝试。@ikegami:是的,这就是计划。现在我只是想从read_file($file)命令中捕获错误。那么为什么你排除了1)?@ikegami:如果1)有效,那么我可以使用try/catch并在死后给出HTML错误报告。我问你为什么说它不工作。我不知道你为什么回答如果成功你会怎么做。