2016-11-22 53 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