整数比较的返回值很奇怪。 (1 == 1)是' 1'但是(1!= 0)是'' (没有)

时间:2015-01-21 05:36:44

标签: perl

我的perl脚本在一个机制上工作但在另一个机制上失败。

我使用perl调试器通过在命令中添加“-d”来调试它。即“perl -d my_perl.pl”。然后我发现所有“整数比较”仅适用于TRUE结果。

e.g。如果我输入debug命令

  

“x(1 == 1)”

它返回'1'(TRUE)。但是如果我输入debug命令

  

“x(1!= 1)”

它返回''(没有,结果预计为0(FALSE))。

BTW,字符串比较是一样的。 x“s”eq“s”返回'1'和x“s”eq“s”返回''。

我使用perl v5.14.2(通过perl -v获取)。我的perl有什么问题?我该如何解决?

1 个答案:

答案 0 :(得分:6)

你的Perl没什么问题;这就是Perl的工作方式。对于true,比较返回1,对于false,比较返回空字符串的特殊版本。见http://perldoc.perl.org/perlop.html#Relational-Operators

  

返回true或false的Perl运算符通常返回可安全用作数字的值。例如,本节中的关系运算符和下一个中的相等运算符返回1表示true,定义空字符串的特殊版本“”,计为零,但不受有关不正确数字转换的警告,因为“0但是真实”是。