2013-08-07 131 views
5

在接受答案 String compare in Perl with "eq" vs "=="Perl的簡單比較== VS EQ

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

「==確實數字比較:這兩個參數轉換成一個數字,然後對它們進行比較。」
「EQ做一個字符串比較:兩個參數必須符合詞法(區分大小寫)」

你只能使用情商比較字符串,但
都EQ和==適用於比較數字

號是字符串的子集,所以我只是不明白爲什麼你會使用==

是否有一個原因,你會希望使用==比較數值比只使用eq的所有?

回答

11

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更便宜。

+0

是啊。說得通。沒有想到這個特殊的事例。 – ealeon

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. 

- 湯姆·威廉姆斯