Que*_*tin 19
变量
$@,$!,$^E,和$?包含关于不同类型的Perl程序的执行过程中可能出现的错误条件信息.变量显示的顺序是报告错误的子系统与Perl进程之间的"距离".它们分别对应于Perl解释器,C库,操作系统或外部程序检测到的错误.
$! 系统调用失败时设置.
open my $fh, '<', '/foobarbaz' or die $!
Run Code Online (Sandbox Code Playgroud)
这将输出"没有这样的文件或目录".
$@包含传递给的参数die.因此:
eval {
open my $fh, '<', '/foobarbaz' or die $!
};
if ( $@ ) {
warn "Caught exception: $@";
}
Run Code Online (Sandbox Code Playgroud)
在$@没有使用某种形式的情况下检查eval是没有意义的,检查$!何时没有调用可以在出错的情况下设置它的函数是没有意义的.