2016-11-22 56 views
4

在Perl中,應該比較兩個字符串與「EQ」或「呢」等perl的比較字符串與「==」

我有點驚訝下面的代碼片段將打印「是」。

$str = "aJohn"; 
$x = substr($str, 1); 
if ($x == "John") { 
    print "yes\n"; 
} 

我的Perl在Ubuntu上有版本v5.18.4。

是否有兩個字符串上的「==」與「eq」產生不同結果的情況? 謝謝。

+0

'$ str eq「John」;'...'$ str ==「John」;' – stevieb

+2

始終使用'use strict;使用警告qw(全部);'! – ikegami

回答

12

"foo" == "bar"爲真。 "foo" eq "bar"是錯誤的。

原因爲:==數字比較。 "foo""bar"都在數值上評估爲0(如"17foo"的數值評估爲17);自0 == 0"foo" == "bar"。這通常不是您正在查找的操作。

+7

請注意,如果您應該啓用警告,則在數字上下文中使用''foo「'或'」17foo「'會產生警告。 – ysth