2012-06-08 2 views
7

У меня массив сказать @array. Я хотел бы знать, какие значения массива образуют ключи хеша, скажем,% hash. Есть ли простой способ сделать это, кроме использования цикла for?Как узнать, являются ли значения массива ключами хэша в Perl?

например,

@array = qw (a b c); 
%hash = (a => 1, b=> 2);  

В этом случае он должен просто выходной 'а' и 'B'.

+3

У вас есть какие-то проблемы bareword, если вы используете 'использовать строги' (и вы должны быть). –

+0

Справа. Если этот массив должен содержать буквенные буквы «a», «b» и «c», он должен быть либо '@array = ('a', 'b', 'c');' или '@array = qw (abc); ' –

+0

@JonathanLeffler: Я использую строгий, я просто не включил его в пример. – Jordan

ответ

17

Это следует сделать это:

my @array = qw(a b c) ; 
my %hash = (a => 1 , b => 2) ; 

my @result = grep { exists $hash{$_} } @array ; 
Смежные вопросы