接受的答案 String compare in Perl with "eq" vs "=="
它说First, eq is for comparing strings; == is for comparing numbers.
“==进行数字比较:它将两个参数都转换为数字然后进行比较。” “eq进行字符串比较:两个参数必须匹配词法(区分大小写)”
您只能使用eq来比较字符串,但是 eq AND ==用于比较数字
数字是字符串的子集,所以我只是不明白为什么你会使用==
你是否有理由想使用==来比较数值而不仅仅是使用eq?
答案 0 :(得分:13)
Here is an example of why you might want ==
:
$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
更便宜。
答案 1 :(得分: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.
-Tom Williams