2013-11-25 63 views
1

如果@ping_host中不存在$ client_id,它必須通過if條件,但只有在@ping_host爲空時纔會通過。我做錯了什麼?如何找到數組中存在的元素?

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

回答

1

首先grep參數應該是一個測試,它返回對@ping_host數組的每個元素布爾值,

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

這是相同的太多,如果 – user1595858

+0

@ user1595858是的,這些都是等價(的grep {$ _ $ EQ CLIENT_ID} @ping_host!)。 –

3

這有點低效使用grep對於這一點,因爲它返回在所有比賽數組,而你只關心它是否至少有一個。您可以使用none此類似:

use List::MoreUtils qw(none); 
if(none { $client_id eq $_ } @ping_host) { 
    print "Client Id $client_name doesn't exist \n"; 
} 
相關問題