我是Perl的新手,我一直在學習過去兩天的Perl基礎知識。 我正在逐漸將Perl腳本轉換爲Java程序。 在Perl腳本中,我遇到了這個代碼。
if($arr[$i]=~/^0$/){
...
...
}
我知道$arr[$i]
意味着從陣列arr
得到i
th元素。
但是=~/^0$/
是什麼意思?
他們比較數組的元素是什麼?
我搜索了這個,但我找不到它。
有人請解釋我。
僅供參考,arr
包含浮點值。
我是Perl的新手,我一直在學習過去兩天的Perl基礎知識。 我正在逐漸將Perl腳本轉換爲Java程序。 在Perl腳本中,我遇到了這個代碼。
if($arr[$i]=~/^0$/){
...
...
}
我知道$arr[$i]
意味着從陣列arr
得到i
th元素。
但是=~/^0$/
是什麼意思?
他們比較數組的元素是什麼?
我搜索了這個,但我找不到它。
有人請解釋我。
僅供參考,arr
包含浮點值。
if ($arr[$i]) =~ /^0$/)
是大致相當於if ($arr[$i] eq "0")
,但不完全一樣,因爲它會同時匹配字符串「0
」和「0\n
」。如果從文件或標準輸入讀取$arr[$1]
,但它不是chomp
,這可能是一個非常重要的區別。
if ($arr[$i] == 0)
另一方面,將匹配以非數字字符或零/空白字符串開頭的任何字符串,該字符串後面沒有數字字符,但如果字符串包含非空字符,則會生成警告。空格,非數字字符或僅包含空格(當然,啓用警告)。
^
和$
是正則表達式錨它說$arr[$i]
應該0
開始並沒有緊隨其後字符串的結尾。
它可以寫爲
if ($arr[$i] eq "0" or $arr[$i] eq "0\n")
'更好'是否更好取決於你是多麼的開心,它比原來更真實。 '更好'是最好的,沒有'使用',(文本)並行性,作者推測他可能會返回到這個測試,以添加到正則表達式。 –
「更好」的版本是一個糟糕的主意,因爲'$ arr [$ i]'是任何非數字字符串,比如「hello world」,它將會是真實的。 –
謝謝,更新。最後,作者最清楚他在'$ arr [$ i]'中放置了什麼,以及是否應該有字符串或數字。 –
=~
是binding operator。
"Binary "=~" binds a scalar expression to a pattern match"
右手邊/^0$/
是regex
^ Match the beginning of the line
$ Match the end of the line (or before newline at the end)
和零有沒有特殊的含義。
聽起來像那個perl腳本是一段很棒的代碼。 '=〜/^0 $ /'是應用於'$ arr [$ i]'的內容的正則表達式。它試圖檢查內容是否爲「0」。 – innaM
@innaM'/^0 $ /'也匹配'「0 \ n」' – mob