如果@ping_host中不存在$ client_id,则必须传递if条件,但只有在@ping_host为空时才会传递。我做错了吗?
if ( !grep( $client_id, @ping_host ) ) {
print "Client Id $client_name doesn't exist \n";
}
答案 0 :(得分:3)
为此使用grep
效率有点低,因为它会返回数组中所有匹配项,而您只关心它是否至少有一个。您可以使用none
,例如:
use List::MoreUtils qw(none);
if(none { $client_id eq $_ } @ping_host) {
print "Client Id $client_name doesn't exist \n";
}
答案 1 :(得分:1)
第一个grep
参数应该是一个测试,它为@ping_host
数组的每个元素返回布尔值,
if ( !grep( $client_id eq $_, @ping_host ) ) {
print "Client Id $client_name doesn't exist \n";
}