我有這樣的代碼數字,並且我得到了警告:Argument "" isn't numeric in numeric eq (==)
爲$id == $_
論證「」是不是在數字EQ(==)
@delete已經數從網頁表單來(CGI請求),可能這就是爲什麼perl將這些數字視爲字符串。它工作正常,但我不知道該如何處理警告。
my @IDs = (21, 36, 6, 7, 64, 6435, 24);
for my $id (@IDs) {
push @insert, $id if (grep $id == $_, @delete)
}
我不想警告。我最好的選擇是什麼?
我首先想到遍歷數組,併爲每個元素調用int
,但我不喜歡這個想法。
哪種方法更好? '@delete = grep!/^$ /,@delete;' 或 '@delete = grep!$ _,@delete;' 很好的解釋。清除了很多疑問。 – GrSrv
謝謝。那麼,在這種情況下'!/^$ /'和'!$ _'做相反的事情。空字符串是一個錯誤的值,所以否定它是真的。但是,執行真/假也是危險的,因爲它可能產生錯誤的否定(如果零'0'是有效值)以及誤報(例如字母或空格)。如果你從網絡表單獲得你的價值,你應該首先徹底驗證它們。在這種情況下,第一個更安全,因爲它只做一件事:檢查字符串是否爲空。 – TLP