Perl中的$ @是什么?

时间:2013-04-30 06:43:48

标签: perl

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

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

2 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:8)

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