我有一个我无法理解的 Perl 脚本。
for $i(@myarr)
{
#some stuff
eval {
#some stuff
};
if($@)
{
print "*** $@ ****";
}
}
- 那个 eval 是做什么的?它是标准的 Perl 命令还是只是一些子命令?
- 变量 $@ 是什么?它目前正在打印一个字符串,但我不知道该字符串来自哪里。
我有一个我无法理解的 Perl 脚本。
for $i(@myarr)
{
#some stuff
eval {
#some stuff
};
if($@)
{
print "*** $@ ****";
}
}
$@
来自最后一个 eval、do-FILE 或 require 命令的 Perl 语法错误或例程错误消息。如果设置,则编译失败,或者 die 函数在 eval 的代码中执行。请阅读此文档http://perldoc.perl.org/perlvar.html
要添加到 Suic 的答案,请参阅允许您使用更具描述性的英文$EVAL_ERROR
模块,以及避免与使用异常处理相关的常见陷阱$@
的Try::Tiny或TryCatch模块。eval
此外,下次您想知道 Perl 函数时,perldoc -f
是您的朋友(如perldoc -f eval
)。