Perl中的$ @是什么?

Coo*_*der 7 perl

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

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

Sui*_*uic 12

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


zou*_*oul 8

为了增加Suic的回答,请参阅英文,让您使用更具描述性的模块$EVAL_ERROR,而不是$@尝试::微小TryCatch是避免使用相关的常见陷阱模块eval进行异常处理.另外,下次你想知道一个Perl函数时,perldoc -f是你的朋友(比如perldoc -f eval).