【问题标题】:The return value of integer compare is strange. (1==1) is '1' but (1!=0) is '' (nothing) [duplicate]整数比较的返回值很奇怪。 (1==1) 是 '1' 但 (1!=0) 是 '' (什么都没有)[重复]
【发布时间】:2015-03-19 13:33:34
【问题描述】:

我的 perl 脚本适用于一种机制,但在另一种机制中失败。

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

例如如果我输入调试命令

“x (1==1)”

它返回“1”(真)。但是如果我输入调试命令

“x (1!=1)”

它返回''(什么都没有,结果应该是0(FALSE))。

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

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

【问题讨论】:

标签: perl


【解决方案1】:

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

返回 true 或 false 的 Perl 运算符通常返回可以安全地用作数字的值。例如,本节中的关系运算符和下一节中的等式运算符返回 1 表示 true 和定义的空字符串的特殊版本 "" ,它被视为零,但不会受到有关不正确数字转换的警告,只是就像“0 但真实”一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 2020-06-26
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多