1

我正在尝试理解以下代码:

sub foo {
    ...
    if ( $@ ) {
        ...
        die $@;
    }
}
4

3 回答 3

13

perldoc -f eval

如果出现语法错误或运行时错误,或者执行了“die”语句,则“eval”返回未定义的值,并将 $@ 设置为错误消息。如果没有错误,则 $@ 保证为空字符串。

另请参阅perldoc perlvar

于 2009-07-30T17:53:30.950 回答
3

$@是一个魔术变量,包含最后一个eval命令的错误消息(如果有)。

于 2009-07-30T17:55:33.723 回答
0

if 循环应该在 eval 之前,以便它能够捕获 $@。

在 eval() 期间,$@ 始终设置为失败并清除成功。

如果 eval() 中的 whr 代码未编译,则 $@ 设置为编译错误。

于 2011-03-07T14:54:00.457 回答