


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Perl eval函数探讨 Perl eval 函数探讨 2006-8-27 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 $ARGV0; 在执行时, 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 $
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025凯里学院第十三届贵州人才博览会引才28人考前自测高频考点模拟试题附答案详解(黄金题型)
- 2025春季中国电子校园招聘考前自测高频考点模拟试题附答案详解(典型题)
- 2025年民航博物馆招聘考前自测高频考点模拟试题及参考答案详解
- 2025年济宁高新区事业单位公开招聘工作人员(教育类)(47人)考前自测高频考点模拟试题完整答案详解
- 2025福建三明清流县金星园建设发展有限公司招聘消防员2人考前自测高频考点模拟试题带答案详解
- 2025年4月广东深圳市光明区教育局招聘公办幼儿园工作人员模拟试卷及完整答案详解1套
- 2025年宜昌市猇亭区急需紧缺人才引进12人考前自测高频考点模拟试题及答案详解(新)
- 2025年美术联考恐怖试卷及答案
- 2025年粤点制作初级试题及答案
- 2025大河智运物流(河南)有限公司招聘10人考前自测高频考点模拟试题及答案详解(名师系列)
- 2025贵州盐业(集团)遵义有限责任公司招聘15人笔试备考试题及答案解析
- EMS供应商对比方案报告
- 神奇的加密术教学设计-2025-2026学年初中数学北师大版2024八年级上册-北师大版2024
- 价格波动对利润影响分析-洞察及研究
- 广西检测协会试题(钢结构检测综合)判断题(1-375)
- 医院感染判定标准与流程
- 我的祖国音乐教学课件
- 2025春江苏开放大学大学英语(B)(1)060051过程性考核作业3参考答案
- 企业决策支持系统-项目案例分析
- DB37-T 5310-2025《城镇排水管渠养护维修服务规范》
- 三年级下册32《每天自省五分钟》心理健康教学设计
评论
0/150
提交评论