2012-06-08 24 views
7

Ho una matrice dire @ array. Vorrei sapere quali valori della matrice formano le chiavi di un hash, diciamo% hash. C'è un modo semplice per farlo a parte l'utilizzo di un ciclo for?Come trovare se i valori di un array sono le chiavi dell'hash in Perl?

esempio,

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

In questo caso dovrebbe solo uscita 'a' e 'b'.

+3

Hai avuto qualche problema bareword se si sta utilizzando 'use strict;' (e si dovrebbe essere). –

+0

Giusto. Se questa matrice deve contenere le lettere letterali 'a', 'b' e 'c', dovrebbe essere '@array = ('a', 'b', 'c');' or '@array = qw (abc); ' –

+0

@ JonathanLeffler: Io uso rigoroso, non l'ho incluso nell'esempio. – Jordan

risposta

17

Questo dovrebbe farlo:

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

my @result = grep { exists $hash{$_} } @array ; 
Problemi correlati