Eval


09/08/06。  cathayan.org版权所有,保留一切权利。转载请保留此说明。谢绝商业转载。

seal of cathayan.org


Eval,也就是evaluation,evaluates a string as though it were an expression,这个词是 估价,评价,求值的意思,这里只能取“求值”这个意思了。以前只在bash shell脚本里见过,也不怎么明白。今天碰到一个大表格,里面有一项要本来是填数字,高人们有的给填成了10*4, 23*8这种算式,这种东西数据库进不去,还是得算,10000多条,想想都烦。

还是得Perl。本来是想把这个式子按*拆开,得到两个数字再做运算,应该也行,不小心翻书就翻到字串处理部分的最后一页,正是eval()这个函数,真是巧了,一读就发现它可以求值,以前翻到这页也不止一次,居然就没看过。

my $t = “33*21+23484/1291”;
my $tt = eval($t);
print $tt;

管它几万行,一个while就加两行eval和print就全算出来了,真是不错啊。

看了Wikipedia的解释,原来许多语言都有这个功能,包括Javascript,Python,Lisp和PHP等。Bash也有,我记得看到的应该就是 eval ‘dircolors’ 这一句,就是运行dircolor,打印出LS_COLORS的值用于bash里面的export什么的。

在perl里面,除了可以求值并赋给其他变量,它还会把运行结果(成功与否)交给特殊变量,$@,如果运行一切正常,就是未定义,如果有问题,里面就是错误信息,这样就可以用它对一个式子在运行前进行检查,免得出除0一类的错误。当然,由于它可以在代码里面再运行代码,危险性也是显而易见的。

09/08/06 00:33:00,由cathayan发表。目录:电脑

Comments

5条评论

globetrekker:

tcl/tk???eval????eval??????????

????logo????
于 09/08/06 08:51:48 发表  

saga:

??????? logo?????????????? logo ???????????
于 09/08/06 09:48:45 发表  http://sagaplus.blogspot.com/

fishy:

?????????php?spider?????php??????eval??????????????
于 09/08/06 11:35:30 发表  http://wang.yuxuan.org/blog/

cathayan:

???????

??Logo??????????????
于 09/08/06 12:18:51 发表  

fishy:

???????????????????html?????regex????????????html????????????sql???????eval????????
于 09/08/06 15:12:34 发表  http://wang.yuxuan.org/blog/

Add Comments

This item is closed, it's not possible to add new comments to it or to vote on it

TrackBack