免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7664 | 回复: 6
打印 上一主题 下一主题

Perl难题:如何将字符串作为if语句的判断条件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-16 23:19 |只看该作者 |倒序浏览
由于perl没有Boolean型变量,当用字符串做if语句的判断条件是,会根据字符串是否为空来得出是否为真的条件。只要字符串不为空,则永远为真。
问题就出在这里。

如果我希望通过读取文件中的一行作为if语句的判断条件,必须先把一行赋值给一个字符型变量。

如某行为: 3 > 1 and 5> 6
但将其赋值给某字符型变量后,如$condition,那么$condition = '3 > 1 and 5> 6';

则 : if($condition) 中条件永远为真,因为作为字符串,其不为空。

而如果直接写为 : if(3 > 1 and 5> 6)则条件为假。

我的问题是有没有办法,在if语句的条件判断部分出现字符串的时候,不根据字符串是否为空来判断真假呢?
可能这个问题描述的不清楚,请高手们指点一二,谢谢啦!!

本人没有积分,不能悬赏不好意思了。

论坛徽章:
0
2 [报告]
发表于 2009-12-16 23:34 |只看该作者
个人感觉似乎难度很大,甚至不可能实现,但还是非常期待奇迹出现。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2009-12-16 23:53 |只看该作者
if( eval $condition )

不过是不安全的做法。

安全的做法可以到 CPAN 上找一些 parse,比如 yapp 什么的。或者简单的也可以自己分析。

论坛徽章:
0
4 [报告]
发表于 2009-12-17 01:04 |只看该作者

回复 #3 flw 的帖子

flw果然牛人,管用。谢谢!

论坛徽章:
0
5 [报告]
发表于 2009-12-17 07:30 |只看该作者

回复 #1 saintbin 的帖子

if的条件用正则表达式

论坛徽章:
1
狮子座
日期:2013-12-16 16:09:24
6 [报告]
发表于 2009-12-17 12:24 |只看该作者
这个不是Perl的难题吧,难道你用C++能简单实现???

论坛徽章:
0
7 [报告]
发表于 2009-12-17 12:34 |只看该作者
肯定是eval
啦··
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP