Blog on 27th Floor
主页 随便 电脑 电影 社会 阅读 下载 本站 存档
主页 随便 电脑 电影 社会 阅读 下载 本站 存档

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发表。目录:电脑

5条评论

tcl/tk中也有eval,有时候eval能完成很奇妙的功能。

上面那个logo很别致啊

globetrekker 于 09/08/06 08:51:48 发表. 

是啊,很好看的 logo。不过我花了一点时间在想这个 logo 和文章有什么关系,呵。

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

当年我打工的时候用php写spider,发现一个php高手就直接用eval来处理抓下来的网页里面的代码

http://wang.yuxuan.org/blog/ fishy 于 09/08/06 11:35:30 发表. 

这个思路不错。

这个Logo不是最新流行嘛,做个玩玩~~

http://blog.cathayan.org/member/1 cathayan 于 09/08/06 12:18:51 发表. 

我回忆了一下,大概是这样的:我的做法是html抓下来,用regex找到数据,扔数据库;他是html抓下来,替换一些东西变成sql操作,然后直接eval执行就存数据库了

http://wang.yuxuan.org/blog/ fishy 于 09/08/06 15:12:34 发表. 


这篇文章已经关闭,不能添加评论和投票
I am watching and will delete all spam.

我的E-Mail


Copy&Paste Exchange

访问CPeX Group

订阅Feed

订阅Feedburner
Feedsky订阅
本站订阅

请登录

导航

cathayan.org Web

最新贴

RIME 小狼毫/鼠须管的极点及五笔拼音配置
Software that rocks or sucks less
一棵热带的树换新叶的过程
几个有用的Vim招术
论语七 述而
Nomacs 图像浏览器
Windows 文件校验
Windows 10 文件批量命名简单方法
Windows 10 文件删除高级操作
本站也算是有响应式设计了

最新评论

Powered by

Powered by Nucleus CMS

版权声明

Creative Commons License
Blog on 27th floor by Cathayan is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
Powered by Nucleus CMS v3.71. Best view with Mozilla browsers.