注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 小五思科技术学习笔记之SSH
 帮助

Perl eval函数探讨


2007-10-11 17:18:47
 标签:函数 eval Perl   [推送到技术圈]

Perl 作为一种脚本语言可以实时地生成和执行代码。这种特性可以把代码的编译推迟到运行时,所以又称为“动态代码”。另外, Perl 也如 Java C++ 一样提供了异常处理机制。本文将初步探讨 Perl 中实现动态代码和异常处理机制的函数: eval 。如有错误不足,欢迎讨论和批评指正。
 
eval 函数可以看作是 Perl 虚拟机,它的参数就是一段 Perl 代码。利用 ’perldoc –f eval’ 可以获取 eval 函数使用帮助,其中介绍了它的两种使用方式:
 
l         eval EXPR
EXPR 是一个的表达式,例如:
eval "print $a" ;
eval 'print $a' . ', $b' ;
eval 1 + 3 ;
eval 'print ' . '$a + $b, "\n"' ;
eval $command;#$command = ‘print “hello Perl”’
eval $ARGV[0];
在执行时, Perl 解释器会首先解析表达式的值,然后将表达式值作为一条 Perl 语句插入当前执行上下文。所以,新生成的语句与 eval 语句本身具有相同的上下文环境。这种方式中,每次执行 eval 语句,表达式都会被解析。所以,如果 eval EXPR 如果出现在循环中,表达式可能会被解析多次。 eval 的这种方式使得 Perl 脚本程序能实时生成和执行代码,从而实现了“动态代码”。
 
l         eval BLOCK
BLOCK 是一个代码块,例如:
eval {print $a};
eval {$a = 1, $b = 2, $c = $a + $b};
与第一种方式不同, BLOCK 只会被解析一次,然后整个插入当前 eval 函数所在的执行上下文。由于解析上的性能的优势,以及可以在编译时进行代码语法检查,这种方式通常被作为 Perl 用来为一段代码提供异常捕捉机制,虽然前一种方式也可以。
 
按帮助的名称,称 eval 的参数程序为“小程序” (mini-program) 。在两种方式中, eval 函数的返回值都是小程序的最后一条语句的值,如果遇到 return 语句,与子例程相同。
Script1:
#!/usr/bin/perl -w
 
push ( @program,'$i = 1;');
push ( @program,'$i = 3; $j = 2; $k = $i + $j');
push ( @program, '$i = 3; return 24; $k = $i + $j');
 
foreach $exp (@program)
{
    $rtn =eval($exp);
    print $rtn,"\n";
}
Output:
1
5
24
 
如果小程序中有语法错误、运行时错误遇到 die 语句, eval 将返回 undef 。错误码被保存在 $@ 中。
Script2:
#!/usr/bin/perl -w
 
push ( @program, '$i = 3; die "error message"; $k = $i + $j');
 
foreach $exp (@program)
{
    $rtn =eval($exp);
    if ( ! defined ( $rtn))
    {
       print "Exception: " , $@,"\n";
    }
    else
    {
       print $rtn,"\n";
    }
} ;
 
Output:
Exception: error message at (eval 1) line 1.
 
 
Script3:
#!/usr/bin/perl -w
 
# a run-time error
eval '$answer =' ;   # sets $@
warn $@ if$@;
 
Output:
syntax error at (eval 1) line 2, at EOF
 
 




    文章评论
 
2007-10-11 20:52:54
perl这个语言现在很少用哦
有什么优势哦?

2007-10-12 13:25:28
脚本语言,效率不是它的优势,但功能强大,我觉得它拥有Shell的强大功能和C语言的风格。对于习惯C风格的程序员,学习Python,Ruby是很困难的事情,但Perl则相反,我就是这样的,嘿嘿。

2008-05-15 19:28:19
粉色诱惑 戴尔新版XPS超薄笔记本到货
 戴尔在五一节前上市了粉红色XPS系列笔记本电脑,目前粉色的XPS已经在戴尔中国官网上接受下单,并且粉红色外壳的XPS M1330笔记本电脑价格与之前的黑色白色价格相同,不需要额外支付费用。粉色顶盖加上XPS的超薄机身,在外观方面更加适合女性用户选购。今天笔者为大家带来一款采用迅驰4平台的XPS M1330(R510534)笔记本电脑。
  要介绍的戴尔XPS M1330(R510534)笔记本配备2GB内存和酷睿双核处理器。目前,订购请拨打戴尔免费咨询电话:800-858-2683,免费升级2GB内存以及160GB硬盘。


戴尔XPS M1330笔记本    
戴尔XPS M1330笔记本
  采用LED屏幕的戴尔XPS M1330(R510534)笔记本外观更加轻薄,标配为黑色或者红色带摄像头套件;顶盖采用立体璨晶亮面、仿陶瓷烤漆等特殊工艺让这款笔记本的外观更加炫酷。
  配置上,戴尔XPS M1330(R510534)笔记本采用英特尔酷睿2双核T7250处理器,英特尔965GM主板芯片组,英特尔3945双频802.11a/g无线网卡,GMA X3100集成显示芯片;存储空间上,升级了2GB双通道内存、160GB硬盘、内置DVD刻录光驱;预装Windows Vista Home Basic操作系统。同时,支持1年全面保护意外损坏支持服务。购买请拨打:800-858-2683
产品名称      戴尔 XPS M1330(R520534)

处理器型号      Intel 酷睿2双核 T7250(2.0GHz)
迅驰描述      迅驰IV(Santa Rosa)
主板芯片组      Intel GM965
标配内存容量      2048MB
最大支持内存      最大支持内存4GB
硬盘容量      160GB
硬盘描述      SATA 5400转
光驱类型      DVD刻录机
光驱描述      8X DVD+/-RW带CDRW一体化光驱
显卡芯片      Intel GMA X3100
屏幕尺寸      13.3英寸
屏幕描述      TFT LCD(1280×800)
笔记本重量      1800g
外形尺寸      318×238×22.1-33.8mm
无线网卡      3945,802.11a/g(54Mbps)
操作系统      Windows Vista Home Basic
质保时效      1年消费者XPS顶级服务含1年CompleteCover
免费咨询热线      800-858-2683

  编辑点评:
  酷睿双核+2GB内存的配置,搭配上戴尔XPS M1330的时尚外观,性价比足够高。免费升级摄像头之后,电脑的交互能力更强。同时,该款电脑不仅仅拥有性价比,实际的使用感受和电脑质量都出于较高的位置,目前购买比较超值。同时,增加了粉色外观更适合女性朋友的选购特点,同时配备粉色顶盖的机型还包括其它型号的XPS M1330以及XPS M1530。
戴尔XPS M1330(R510534)笔记本
[网上订购] 点击进入订购页面
[联系电话] 800-858-2683
[订购方法] 点击进入查看

通过以下链接也可购买:

http://dellstorecn.sg.dell.com/public/default.jsp?c=cn&s=dhs&l=cn&rflag=AP&aflag=A&siteid=ad4allarticleNB

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: