Perl编程:eval、do块与引用的深入解析
一、eval的使用
1.1 eval块的特点
eval块能在编译时捕获语法错误,而非运行时,并且它也不会捕获警告信息。不过,Perl提供了拦截警告消息的方法,可查看 $SIG{__WARN__} 。对于简单操作,直接使用eval即可,但处理复杂情况时可能会比较棘手。在v5.14版本中,部分问题得到了修复,也可以使用 Try::Tiny 模块,示例代码如下:
use Try::Tiny;
my $average = try { $total / $count } catch { "NaN" };
1.2 动态代码eval
另一种形式的eval,其参数是字符串表达式,它会在运行时编译并执行字符串中的代码。虽然这种方式很有用,但如果字符串中包含不可信的数据,就会很危险。示例代码如下:
eval '$sum = 2 + 2';
print "The sum is $sum\n";
在执行eval之前,Perl会先对双引号字符串进行插值。如果想让变量在eval代码中不被插值,需要进行相应处理。下面是一个遍历运算符的示例:
#!/usr/bin/perl
foreach my $operator ( qw(+ − * /) ) {
my $result = eval "
超级会员免费看
订阅专栏 解锁全文
6

被折叠的 条评论
为什么被折叠?



