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

car*_*arl 1 perl

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

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

例如,如果我输入debug命令

"x(1 == 1)"

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

"x(1!= 1)"

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

顺便说一下,字符串比较是一样的.x"s"eq"s"返回'1'和x"s"eq"s"返回''.

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

bgo*_*dst 6

你的Perl没有错; 这就是Perl的工作方式.对于true,比较返回1,对于false,比较返回空字符串的特殊版本.请参阅http://perldoc.perl.org/perlop.html#Relational-Operators:

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