参考:
[1]: http://weidagang2046.blog.51cto.com/246444/45923/
错误码被保存在 $@ 中
一、eval EXPR
EXPR 是一个的表达式
eval "print $a" ;
eval 'print $a' . ', $b' ;
Perl 解释器会首先解析表达式的值,然后将表达式值作为一条 Perl 语句插入当前执行上下文。每次执行都会解析(实现动态代码效果)
二、eval BLOCK # 推荐使用
BLOCK 是一个代码块,例如:
eval {print $a};
eval {$a = 1, $b = 2, $c = $a + $b};
BLOCK 只会被解析一次,然后整个插入当前 eval 函数所在的执行上下文。
如果BLOCK 中有语法错误、运行时错误遇到 die 语句, eval 将返回 undef 。错误码被保存在 $@ 中
示例
$rtn =eval($exp);
if ( ! defined ( $rtn)) {
print "Exception: " , $@,"\n";
}
else {
print $rtn,"\n";
}