29.2.32 eval
• eval BLOCK
• eval EXPR
• eval eval 关键字在Perl 里起两种不同的但相关的作用。这些目的是用两种形式的语法
来表现的, eval BLOCK 和eval EXPR。第一种形式捕获那些致命的运行时例外
(错误),类似于C++ 或Java 里的“try 块”。 eval { ... }; # 捕获运行时错误
if ($@) { ... } # 处理错误 [tomcat@wx03 ~]$ cat a1.pl
use File::Path;
eval {mkpath ("/root/bigger/1")};
if ($@) {print $@; }
[tomcat@wx03 ~]$ perl a1.pl
mkdir /root/bigger: Permission denied at a1.pl line 2. eval BLOCK eval EXPR 两种形式的 eval 所返回的值都是它计算的最后一个表达式的值,这一点和子过程
一样。 在 BLOCK 里的代码必须是合法的Perl 代码,这样它才能通过编译阶段。 在EXPR 里的代码直到运行时才检查,所以要到运行时它才导致错误的发生。 eval BLOCK 形式是在编译时做语法检查的,所以它的效率相当高。 eval EXPR 形式可以捕获语法错误是因为它在运行时分析代码。 eval EXPR
EXPR 是一个的表达式 [tomcat@wx03 ~]$ cat a4.pl
my $str=eval {return 100};
print "\$str is $str\n";
[tomcat@wx03 ~]$ perl a4.pl
$str is 100 eval 所返回的值都是它计算的最后一个表达式的值,这一点和子过程
一样。类似的,你可以用return 操作符从eval 的中间返回一个数值

perl eval函数的更多相关文章

  1. php 禁用eval( )函数

    php的eval函数并不是系统组件函数,因此我们在php.ini中使用disable_functions是无法禁止它的. 但是eval()对于php安全来说具有很大的杀伤力,因此一般不用的情况下为了防 ...

  2. Perl 子程序(函数)

    1.Perl 子程序(函数)Perl 子程序也就是用户定义的函数.Perl 子程序即执行一个特殊任务的一段分离的代码,它可以使减少重复代码且使程序易读. Perl 子程序可以出现在程序的任何地方,语法 ...

  3. JS eval()函数的一些见解

    一.eval是基本使用规则 1 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 2 eval(string) 3 string必需.要计算的字符串,其中含有要计算的 ...

  4. 浅谈JavaScript eval() 函数

    用js的人都应该知道eval()函数吧,虽然该函数用的极少,但它却功能强大,那么问题来了,为什么不常用呢?原因很简单,因为eval()函数是动态的执行其中的字符串,里面有可能是脚本,那么这样的话就有可 ...

  5. [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")

    javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢?   原因在于: ...

  6. JavaScript的eval函数

    eval() 函数可将字符串转换为代码执行,并返回一个或多个值 函数原型为: 返回值 = eval( codeString ) 函数说明: 如果eval函数在执行时遇到错误,则抛出异常给调用者. 类似 ...

  7. python笔记-调用eval函数出现invalid syntax错误

    本来是想打算使用eval函数对变量进行赋值的,没想到出现了invalid syntax错误.源代码如下 In [2]: eval('a = 1') File "<string>& ...

  8. JavaScript中Eval()函数的作用

    这一周感觉没什么写的,不过在研究dwz源码的时候有一个eval()的方法不是很了解,分享出来一起学习 -->首先来个最简单的理解 eval可以将字符串生成语句执行,和SQL的exec()类似. ...

  9. JavaScript eval() 函数

    定义和用法:eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法:eval(string) 参数 描述 string 必需.要计算的字符串,其中含有要计算的 Java ...

随机推荐

  1. python 的经常使用时间操作,取得当前时间等

    我们先导入必须用到的一个module>>> import time设置一个时间的格式,以下会用到>>>ISOTIMEFORMAT=’%Y-%m-%d %X’看一下当 ...

  2. centos安装vim7.4

    转载于:http://www.cnblogs.com/nhlinkin/p/3545509.html    系统版本centos6.4; root权限 su - root     卸载 $ rpm - ...

  3. JavaScript 高级程序设计(第3版)笔记——chapter5:引用类型

    Chapter5 引用类型 本章内容: l  使用对象 l  创建并操作数组 l  理解基本的JavaScript类型 l  使用基本类型和基本包装类型 l  从技术上讲,JavaScript是一门面 ...

  4. 复习C语言系列二:动态调用函数指针数组

    a:用call_fun_ptr调用afun(),b:用call_fun_ptr调用bfun() a 请输入给您指定的函数输调用的参数 afun_par ------------------------ ...

  5. Java 重入锁 ReentrantLock

    本篇博客是转过来的. 但是略有改动感谢 http://my.oschina.net/noahxiao/blog/101558 摘要 从使用场景的角度出发来介绍对ReentrantLock的使用,相对来 ...

  6. Google Code Jam Round 1C 2015 Problem A. Brattleship

    Problem You're about to play a simplified "battleship" game with your little brother. The ...

  7. ZOJ 3203 Light Bulb - 求导求最大值

    如果L全在地面上: 输出 h * D / H 如果L全在墙上: 输出 h 否则: (D - X ) / X = Y / (H - h) L = D - X + h - Y 然后对L求导即可 #incl ...

  8. 转:C++ 匿名namespace的作用以及它与static的区别

    匿名namespace的作用以及它与static的区别 一.匿名namespace的作用在C语言中,如果我们在多个tu(translation unit)中使用了同一个名字做为函数名或者全局变量名,则 ...

  9. php 解析url 和parse_url使用

    通过url进行传值,是php中一个传值的重要手段.所以我们要经常对url里面所带的参数进行解析,如果我们知道了url传递参数名称,例如 /index.php?name=tank&sex=1#t ...

  10. 转:Bootstrap研究 精巧的网格布局系统

    本网格布局系统属于Scaffolding(框架,布局)部分.在Scaffolding里面有(固定)网格布局(Grid System)和流式网格布局(Fluid Grid System).本文讨论第一种 ...