不要把数字比较符和字符比较符弄混

ZDNet软件频道 时间:2004-02-10 作者:ZDNet China |  我要评论()
本文关键词:perl
因为Perl是松散类型语言,所以在比较两个变量的时候经常拿不准应该选择哪种比较符。Perl将会按照你选择的比较符进行计算然后给出结果,也许结果并不是你想要的。
本文译自Builder.com,未经许可请勿转载

因为perl是松散类型语言,所以在比较两个变量的时候经常拿不准应该选择哪种比较符。perl将会按照你选择的比较符进行计算然后给出结果,也许结果并不是你想要的。

例如,下面的代码将打印2>10:

$a = 2;

$b = 10;

print "$a > $b" if ($a gt $b);

 

这个比较使用字符串比较符“大于”--“gt”,而不是数字比较符“>”,使用切换到数字比较符的方法可以解决这个问题。

强迫perl语言去解释一个数字变量的一个方法就是去执行一个数学操作,最常使用的方法就是在数字前面加一个0,如:

print "greater" if (0+$a > 0+$b);

同样的,如果你想要强迫perl去解释字符串中的东西,只需要将它连接一个空字符串就可以了,例如:

print "greater" if (''.$a gt ''.$b);

最容易犯的错误就是使用数字比较符去比较字符串。这会产生不可预料的结果,因为任何不是以数字开头的字符串(或者在数字后面跟有空格符)在数字文本中都将会被解释成0

下面的这个代码将打印出“abc=def”:

$a = "abc";

$b = "def";

 

print "$a > $b" if ($a > $b);

print "$a < $b" if ($a < $b);

print "$a = $b" if ($a == $b);



责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134