我正在使用File::Slurp
read_file
和write_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
是个坏主意吗?
最佳答案
该模块的文档似乎已经过时,并且与行为不符(编辑:它已在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.
关于perl - 如何处理文件::Slurp read_file properly?上的错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33273225/