perl - 如何使Perl为无效或不存在的文件引发错误?

标签 perl error-handling warnings diamond-operator

将Perl与-p或-n标志一起使用,或对不存在的文件使用菱形运算符将不会退出并出现错误:

$ perl -pe '' badfile || echo error
Can't open badfile: No such file or directory.
$
$ perl -ne '' badfile || echo error
Can't open badfile: No such file or directory.
$
$  perl -e 'print while <>' badfile || echo error
Can't open badfile: No such file or directory at -e line 1.
$

当给定错误文件时,如何强制perl引发错误,而不仅仅是警告?

最佳答案

使用local $SIG{__WARN__} = sub { die @_ };设置警告处理程序以引发错误。

$ # Put handler code in BEGIN block for -p and -n:
$ perl -pe 'BEGIN{$SIG{__WARN__}=sub{die @_}}' badfile || echo error
Can't open badfile: No such file or directory.
error
$
$ perl -ne 'BEGIN{$SIG{__WARN__}=sub{die @_}}' badfile || echo error
Can't open badfile: No such file or directory.
error
$
$ perl -e '$SIG{__WARN__}=sub{die @_}; print while <>;' badfile || echo error
Can't open badfile: No such file or directory at -e line 1.
error
$ 

关于perl - 如何使Perl为无效或不存在的文件引发错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30608919/

相关文章:

powershell - 从PowerShell中的New-WebServiceProxy捕获错误

postgresql - 如何将plpgsql中的查询错误保存到表中?

c# - 在 C# 中覆盖 Object.Equals() 实例方法;现在代码分析/FxCop 警告 CA2218 : "should also redefine GetHashCode". 我应该抑制这个吗?

c - va_start 警告 "second parameter of ' va_start ' not last named argument"

python - 在python中进行异常处理时正确的行号

xcode - 针对 Mac OS X 10.8 之前的目标进行编译时,Base.lproj/MainMenu.xib 不可用

regex - 如何匹配问号?

multithreading - Perl 多线程文件/列表比较

perl - 如何从重复超过六次的文件中打印行

php - 3XX 重定向的自定义错误文档