當我嘗試匹配2個相同的變量時,它會一直工作,直到在我的perl中有一個方括號。 VAR1 = u6701,VAR2 = u6701匹配並給出等於 但是,VAR1 = aw [101],VAR2 = aw [101]給了我UNEQUAL。在Perl中匹配內部方括號
我使用$ VAR1 == $ VAR2來檢查並且這兩個變量都是字符串。請幫忙。
謝謝。
當我嘗試匹配2個相同的變量時,它會一直工作,直到在我的perl中有一個方括號。 VAR1 = u6701,VAR2 = u6701匹配並給出等於 但是,VAR1 = aw [101],VAR2 = aw [101]給了我UNEQUAL。在Perl中匹配內部方括號
我使用$ VAR1 == $ VAR2來檢查並且這兩個變量都是字符串。請幫忙。
謝謝。
在Perl中,以檢查兩個字符串值,我建議你使用eq
爲如
if($VAR1 eq $VAR2)
return true;
else
return false;
==
對數字測試平等。 eq
對字符串也一樣。
也可以使用cmp
操作者,這是< =>操作人員的非數值當量:
$result = $string1 cmp $string2;
$結果將是:
`0` if the strings are equal
`1` if string1 is greater than string2
`-1` if string1 is less than string2
==
是數字平等運算符在Perl中,它會檢查兩件事是否等於,編號爲。 eq
是字符串相等運算符,這就是你想要使用的。 「1」和「01.00」等於數字,但不是字符串。 Here's the docs on all the equality operators。還有不錯的在線書籍Beginning Perl。
==
爲什麼有時會起作用是因爲Perl對於將字符串解釋爲數字而言非常自由,至於絕望的地步。通常它會將字符串視爲0,但有時它會在字符串中找到一個數字並使用它。例如,「101aw」將被解釋爲101,但「aw101」爲0.不要依賴於此。
順便說一句,Perl會警告你所有這些,但不是默認的。你必須turn on strict and warnings和我高度建議你做,並處理它帶來的所有問題。它會節省你(和我們)很多時間。
這看起來不像Perl。我懷疑你沒有向我們展示真實的代碼。 – Schwern 2015-02-06 06:10:45
雖然只是爲了混淆這個問題,但標量實際上是幕後的雙重價值:http://stackoverflow.com/questions/28186617/concerns-with-concatenating-strings-and-ints/28187890#28187890 – Sobrique 2015-02-06 15:42:56
@Sobrique Total離題,但我不能幫助自己。標量可以是一個三元值,[PVNV可以包含一個標量的字符串,整數和雙精度表示](https://gist.github.com/schwern/d4dcf7523151acd9e0b8)。你可以在[illguts - Illustrated Perl Guts]中看到它(https://github.com/rurban/illguts/blob/master/illguts.pdf?raw=true)。 – Schwern 2015-02-06 18:48:05