Perl中的$@是什么?

Perl中的$@是什么?,perl,Perl,我有一个我无法理解的Perl脚本 for $i(@myarr) { #some stuff eval { #some stuff }; if($@) { print "*** $@ ****"; } } 那个评估是做什么的?它是一个标准的Perl命令还是只是一些子命令 变量$@是什么?它目前正在打印一个字符串,但我不知道该字符串来自何处 $@上次eval、do FILE或require命令中的Perl语法错误或例程

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

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

  • $@
    上次eval、do FILE或require命令中的Perl语法错误或例程错误消息。如果设置,则编译失败,或者在eval代码内执行die函数。请阅读此文档

    以添加到Suic的答案中,请参阅允许您使用更具描述性的
    $EVAL_ERROR
    而不是
    $@
    的模块,以及避免使用
    EVAL
    进行异常处理的常见陷阱的or模块。另外,下次当你想知道Perl函数时,
    perldoc-f
    是你的朋友(比如
    perldoc-f eval
    )。

    看看谢谢你的回答。现在了解了eval的工作。嗨,zoul,谢谢你提供的更多信息!关于perldoc-f,我应该在我的解释器上运行它吗?我使用的是Hamilton C Shell,它可以很容易地从Perl-v检测Perl的版本,但是它不能执行您的命令。你可以用谷歌搜索“perldocfoo”,效果也差不多。