2012-06-08 20 views
7

私は@arrayという配列を持っています。配列のどの値がハッシュのキーを形成しているかを知りたい、例えば%hash。 forループを使う以外に簡単な方法がありますか?この場合配列の値がPerlのハッシュのキーであるかどうかを調べる方法は?

例えば、

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

それだけ出力 '' と 'B' をすべきです。

+3

あなたは '厳しい使用使用している場合は、いくつかの裸の単語の問題を持っている;'(とあなたがする必要があります)。 –

+0

右。その配列にリテラル文字 'a'、 'b'、 'c'が含まれていると仮定した場合、配列は '@array =( 'a'、 'b'、 'c');または' @array = qw(abc); ' –

+0

@JonathanLeffler:私はstrictを使用していますが、私はこの例に含めなかっただけです。 – Jordan

答えて

17

これはそれを行う必要があります。

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

my @result = grep { exists $hash{$_} } @array ; 
関連する問題