2012-09-08 108 views
1

可能重複:
How do I compare two strings in Perl?字符串比較神祕失敗

爲什麼這個腳本總是返回 「你贏了」?

print "Choose heads or tails :\n"; 
$answer = <STDIN>; 
chomp $answer; 

if($answer == "heads") { 
    print "You won\n"; 
} 
else { 
    print "Moron! You lost.\n" 
} 

什麼應該是正確的代碼相同?

+1

http://stackoverflow.com/questions/1175390/how-do-i-compare-two-strings-in-perl – j0nes

+2

使用'使用警告;' – perreal

+0

並'使用strict;'。他們會提醒你這個問題(參數「頭」不是數字eq(==)中的數字),並且在使用它之前你還沒有聲明你的'$ answer'變量。 – Quentin

回答

14

Perl中的字符串比較使用eq而不是==。請嘗試:

if ($answer eq "heads") 

如果您正在比較您使用的號碼==

perlmonks.

瞭解更多關於它的帖子在學習Perl的,我建議你用use strict;use warnings;啓動腳本。這樣你會得到這種操作的警告。它也將幫助你拼寫錯誤的變量。

+0

我對其他程序使用嚴格。其中之一,我用以下格式的用戶輸入:'$ n = ;'我得到了這樣的錯誤 - '它需要明確的軟件包名稱。'循環變量也有同樣的錯誤。你能否詳細說明一下? – Exorcist

+1

在他們之前使用'my'聲明變量。即'我的$ n;'或'我的$ n = ;' – Qiau

+3

@Exorcist - 你用什麼資源來學習Perl?有些非常陳舊,過時。 – DVK