eval 表达式:
eval 块:
eval
在第一种形式,通常称为一个字符串eval
EXPR 返回值是被解析的和被执行的作为一个小小的Perl程序。
表达式的值(是它本身决定的在标量上下文环境)是有限被解析,
如果这里没有错误,作为一个block执行在当前Perl程序的词法上下文。
这意味着,特别情况下, 任何外部的词法变量时可见的,任何包变量设置或者子函数和
格式定义 之后仍旧存在
注意 eval执行值是每次都被解析的, 如果EXPR 被省略, 评估$_.
这种形式是典型的用于延迟解析。
如果unicode_eval 功能是被启用( 默认是在5.16或者更多的版本)
EXPR 或者$_ 是作为一个字符串,因此 use utf8 声明没有影响,
源过滤器是被禁止的。
在没有unicode_eval的功能下,
字符串有时候回对待为 字符和作为字节,
取决于内部编码,源过滤器激活eval 展现不稳定,
如果字符串扩展一个标量包含一个浮点数.
标量可能扩展为字母,比如 "NaN" or "Infinity"
在一个use locale的范围内.
第2中形式中, BLOCK里的代码只被解析一次,在同一时间围绕代码
eval本身是被解析-- 被执行在当前的Perl程序的上下文。
这种形式通常用来捕获异常。
最后的分号,如果有的话,可以从EXPR的值或者BLOCK里省略
在这两种形式中, 返回值是最后一个表达式计算的值,
一个return语句也可以使用,就像在子函数里。
表达式提供的返回值是计算为空白的,标量,或列表上下文,
依赖eval 本身的列表上下文。
如果有一个语法错误或者运行时错误,或者一个"die" 语句被执行,
"eval"
perl eval
最新推荐文章于 2025-06-18 09:52:48 发布