10

我有一个我无法理解的 Perl 脚本。

for $i(@myarr)
{
    #some stuff
    eval {
        #some stuff
    };
    if($@)
    {
        print "*** $@ ****";
    }
}
  1. 那个 eval 是做什么的?它是标准的 Perl 命令还是只是一些子命令?
  2. 变量 $@ 是什么?它目前正在打印一个字符串,但我不知道该字符串来自哪里。
4

2 回答 2

16

$@来自最后一个 eval、do-FILE 或 require 命令的 Perl 语法错误或例程错误消息。如果设置,则编译失败,或者 die 函数在 eval 的代码中执行。请阅读此文档http://perldoc.perl.org/perlvar.html

于 2013-04-30T06:46:19.773 回答
8

要添加到 Suic 的答案,请参阅允许您使用更具描述性的英文$EVAL_ERROR模块,以及避免与使用异常处理相关的常见陷阱$@Try::TinyTryCatch模块。eval此外,下次您想知道 Perl 函数时,perldoc -f是您的朋友(如perldoc -f eval)。

于 2013-04-30T07:02:22.967 回答