perl将字符串与"=="进行比较

pac*_*tie 6 perl

在perl中,应该将两个字符串与"eq"或"ne"等进行比较.

我有点惊讶以下代码片段将打印"是".

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

我的perl在Ubuntu上的版本为v5.18.4.

是否存在两个字符串上的"=="与"eq"产生不同结果的情况?谢谢.

Ama*_*dan 14

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

这样做的原因:==数字比较."foo""bar"均数值计算为0(像"17foo"求值数值到17); 自从0 == 0,"foo" == "bar".这通常不是您正在寻找的操作.

  • 请注意,如果您已启用警告,则在数字上下文中使用"foo"或"17foo"将产生警告. (7认同)