Perl
作为一种脚本语言可以实时地生成和执行代码。这种特性可以把代码的编译推迟到运行时,所以又称为“动态代码”。另外,
Perl
也如
Java
、
C++
一样提供了异常处理机制。本文将初步探讨
Perl
中实现动态代码和异常处理机制的函数:
eval
。如有错误不足,欢迎讨论和批评指正。
eval
函数可以看作是
Perl
虚拟机,它的参数就是一段
Perl
代码。利用
’perldoc –f eval’
可以获取
eval
函数使用帮助,其中介绍了它的两种使用方式:
l
eval EXPR
EXPR
是一个的表达式,例如:
在执行时,
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
语句,与子例程相同。
如果小程序中有语法错误、运行时错误遇到
die
语句,
eval
将返回
undef
。错误码被保存在
$@
中。
分享到:
相关推荐
Perl die、warn、eval函数使用总汇
java实现eval函数,java文件放入eclipse直接可以运行。
详细介绍eval函数用法,一看必懂.。。。
NULL 博文链接:https://longxingtx520.iteye.com/blog/1163552
深入认识javascript中得eval函数深入认识javascript中得eval函数深入认识javascript中得eval函数
Python的eval函数写的eval_calc(计算器) 进行了多重符号判断,可以在很大程度上帮助孩子们学习。
2020年EVAL 函数EXECUTEGLOBAL 语句使用说明.pdf2020年EVAL 函数EXECUTEGLOBAL 语句使用说明.pdf2020年EVAL 函数EXECUTEGLOBAL 语句使用说明.pdf2020年EVAL 函数EXECUTEGLOBAL 语句使用说明.pdf2020年EVAL 函数...
使用Python实现的四则运算,注释清晰,功能备注完整,主要练习函数递归和正则表达式,目前只能计算整数的四则运算,如需完善,可把...供初学Python的同学参考(实现过程没有使用eval函数,否则失去练习效果,无意义)。
JavaScript有许多小窍门来使编程更加容易。其中之一就是eval()函数,这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它。
perl函数手册英文版 Perl提供了可以直接调用的、数目众多的函数。可以对以下对象进行操作: 数组:chomp, join, keys, map, pop, push, reverse, shift, sort, splice, split, unshift, values 数据库:dbmclose, ...
在Javascript中Eval函数的使用
本文实例分析了javascript中eval函数用法。分享给大家供大家参考。具体分析如下: eval()只有一个参数,如果传入的参数不是字符串,则直接返回这个参数。否则会将字符串当成js代码进行编译,如果编译失败则...
)一 eval函数问题 JavaScript中的eval函数是颇受开发者争议的问题之一,问题主要在于其可能导致的不安全性。有关此方面问题,在此不再赘述,读者可能很容易地浏览到许多介绍性文章。 但是,eval函数的优点也是...
今天看代码,遇到一个eval函数的问题,到现在翻了很多博文,还是不是很懂eval函数,有个一直没法理解的代码如下: /* var start = [] , end = [] , timings = []; */ function f(){ //模拟程序执行时间 var sum ...
在利eval函数执行一段代码时,必须要去掉里面的换行符和回车符,但如果不去掉注释,会出现问题,就是注释后面的所有内容不执行,被当作是注释的内容,所以还要去掉各种注释,这里的解决方案可以把所有注释都去掉
javascript中eval函数用法分析.docx
js eval函数使用,js对象和字符串互转实例.docx
Javascript 中 eval 函数的详细用法与说明 eval 函数是 JavaScript 中一个非常强大且灵活的函数,它可以将一个字符串当作一个 JavaScript 表达式一样去执行它。以下是 eval 函数的详细用法和说明: eval 函数的...
它类似于动态语言中常见的 eval 函数的基本形式。 例子: res , err := EvalBool ( "1 > 2" )log . Print ( res )> false res , err := EvalBool ( `(1 + 3) >= 4 && ("FOO" == "BAR" || "FOO" == "FOO")` )log . ...
php的eval函数并不是系统组件函数,因此我们在php.ini中使用disable_functions是无法禁止它的。 但是eval()对于php安全来说具有很大的杀伤力,因此一般不用的情况下为了防止类似如下的一句话木马入侵,需要...