8

在 Perl 中使用“eq”与“==”进行字符串比较的公认答案

它说First, eq is for comparing strings; == is for comparing numbers.

“== 进行数字比较:它将两个参数转换为数字,然后比较它们。”
“eq 进行字符串比较:两个参数必须在词法上匹配(区分大小写)”

您只能使用 eq 比较字符串,但
eq AND == 都适用于比较数字

数字是字符串的子集,所以我只是不明白你为什么会使用 ==

您是否有理由要使用 == 来比较数值而不是仅使用 eq 来比较所有值?

4

2 回答 2

15

以下是您可能想要的示例==

$a = "3.0";
print "eq" if $a eq "3"; # this will not print
print "==" if $a == 3;   # this will print

3.0 在数值上等于 3,因此如果您希望它们相等,请使用==. 如果要进行字符串比较,"3.0"则不等于“3”,因此在这种情况下,您将使用eq. 最后,==是比eq.

于 2013-08-07T03:07:51.057 回答
4

字符串比较完全不同,尤其是数字。

@s_num=sort {$a <=> $b} (20,100,3);   # uses explicit numeric comparison
print "@s_num\n";                     # prints 3 20 100, like we expect

@s_char=sort (20,100,3);              # uses implicit string comparison
print "@s_char\n";                    # prints 100 20 3, not so good.

——汤姆·威廉姆斯

于 2013-08-07T03:46:02.530 回答