Perl eval语句
perldoc?>>>http://perldoc.perl.org/functions/eval.html do?语句做了类似的功能:do?'filea'?==?eval?`cat?filea`; 形式 1.eval?Expression 2.eval?BLOCK "1"在运行时编译和执行 "2"在编译时编译,运行时执行 因此,"1"编译多次,运行多次。"2”编译一次,运行多次。 eval?会在编译和运行的过程中产生的错误和异常记录在变量$@中。 **举例**: A:eval?$x; B:eval?"$x"; C:eval?'$x'; D:eval?{?$x?}; 根据“1”和“2”:A,B,C?是在运行时编译,D在编译时编译 A与B完全等价。在运行时编译时会对变量进行展开,然后对展开的值进行eval。设$x='my?$a=20;print?"hello","$an"'; 那么,eval?$x?==>?eval?{?my?$a=20;print?"hello","$an"}; C因为是单引号包起来,在运行时编译时候不进行变量展开。 D在编译时编译,在运行时候进行运行。 返回值 在列表环境中返回列表,在标量环境中返回标量,类似函数。 返回值是最后一个语句的值。可以通过return语句明确返回值。 错误时返回undef和空表,同时会将错误信息记录在$@中。 A?control?flow?operator?like?last?or?goto?can?bypass?the?setting?of?$@ 用途 形式“2”常用来捕获异常。 形式“1”来构造灵活的代码。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |