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_模式
。不工作
使用PerlFile::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错误报告。我问你为什么说它不工作。我不知道你为什么回答如果成功你会怎么做。