如何在数组中找到元素?

时间:2013-11-25 20:39:22

标签: perl

如果@ping_host中不存在$ client_id,则必须传递if条件,但只有在@ping_host为空时才会传递。我做错了吗?

if ( !grep( $client_id, @ping_host ) ) {
            print "Client Id $client_name doesn't exist \n";
 }

2 个答案:

答案 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";
}