1
如果@ping_host中不存在$ client_id,它必須通過if條件,但只有在@ping_host爲空時纔會通過。我做錯了什麼?如何找到數組中存在的元素?
if (!grep($client_id, @ping_host)) {
print "Client Id $client_name doesn't exist \n";
}
如果@ping_host中不存在$ client_id,它必須通過if條件,但只有在@ping_host爲空時纔會通過。我做錯了什麼?如何找到數組中存在的元素?
if (!grep($client_id, @ping_host)) {
print "Client Id $client_name doesn't exist \n";
}
首先grep
參數應該是一個測試,它返回對@ping_host
數組的每個元素布爾值,
if (!grep($client_id eq $_, @ping_host)) {
print "Client Id $client_name doesn't exist \n";
}
這有點低效使用grep
對於這一點,因爲它返回在所有比賽數組,而你只關心它是否至少有一個。您可以使用none
此類似:
use List::MoreUtils qw(none);
if(none { $client_id eq $_ } @ping_host) {
print "Client Id $client_name doesn't exist \n";
}
這是相同的太多,如果 – user1595858
@ user1595858是的,這些都是等價(的grep {$ _ $ EQ CLIENT_ID} @ping_host!)。 –