Perl简单比较== vs eq

时间:2013-08-07 02:59:14

标签: perl

接受的答案 String compare in Perl with "eq" vs "=="

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

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

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

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

你是否有理由想使用==来比较数值而不仅仅是使用eq?

2 个答案:

答案 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