這做什麼,我會就喜歡這段代碼做了什麼?
if (grep {/$dn/} @ad_sys) {
$is_system = 1;
}
但這總是返回1
。
if (grep $_ == $dn, @ad_sys) {
$is_system = 1;
}
第二塊做什麼?
這做什麼,我會就喜歡這段代碼做了什麼?
if (grep {/$dn/} @ad_sys) {
$is_system = 1;
}
但這總是返回1
。
if (grep $_ == $dn, @ad_sys) {
$is_system = 1;
}
第二塊做什麼?
==
用於數字比較,如果需要字符串比較使用eq
。
爲上下文擴展:在Perl中,任何字符串都可以隱式轉換爲數字。如果字符串以一個數字開始,那麼數字就是結果,否則結果爲0.所以像''foo'=='bar''這樣的比較與'0 == 0'是一樣的。如果你使用warings;'你會得到像'Argument'bar'這樣的警告在數字eq(==)中不是數字,讓你知道哪裏出了問題。 – 2011-04-04 15:17:36
它過濾了列表@ad_sys中的那些元素,這些元素的數值爲等於$ dn。 然後,如果結果不爲空,則條件爲真,並輸入if塊。
這兩段代碼有兩點區別。
首先,正如其他人已經指出的那樣,存在數值比較運算符的問題。
但其次,/ $ dn /檢查$ _是否包含$ dn中的數據。 $ _ eq $ dn檢查$ _是否等於$ dn。
這種差異可能會導致問題,例如,如果您的數據由從尚未被刪除的文件中讀取的行構成,以刪除換行符。
如果您給出$ dn和@ad_sys的值,這可能很有幫助。 – Ingo 2011-04-04 13:12:27