使用"=="比较Perl字符串

6
在Perl中,应使用"eq"或"ne"等比较运算符来比较两个字符串。
我有点惊讶下面的代码段将打印"yes"。
$str = "aJohn";
$x = substr($str, 1);
if ($x == "John") {
    print "yes\n";
}

我在Ubuntu上使用的perl版本是v5.18.4。

"=="和"eq"有没有可能在比较两个字符串时得出不同的结果?谢谢。


$str eq "John"; ... $str == "John"; - stevieb
2
始终使用 use strict; use warnings qw( all ); - ikegami
1个回答

14

"foo" == "bar"是真的。 "foo" eq "bar"是假的。

原因是:==数字比较符。 "foo""bar"都被数值化为0(就像"17foo"被数值化为17)。由于0 == 0,所以"foo" == "bar"。这通常不是您要执行的操作。


7
请注意,在数字上下文中使用"foo""17foo"将会产生警告,如果你已经启用了警告,那么警告信息将会显示,这是应该的。 - ysth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接