2012-06-08 45 views
7

Tengo una matriz que dice @array. Me gustaría saber qué valores de la matriz forman las teclas de un hash, digamos% hash. ¿Hay una manera simple de hacerlo además de usar un bucle for?¿Cómo encontrar si los valores de una matriz son las claves de hash en Perl?

por ejemplo,

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

En este caso sólo debe de salida 'a' y 'b'.

+3

Tienes algunos problemas bareword si usted está usando 'use strict;' (y debe ser). –

+0

Derecha. Si se supone que esa matriz debe contener las letras literales 'a', 'b' y 'c', debe ser '@array = ('a', 'b', 'c');' o '@array = qw (abc); ' –

+0

@JonathanLeffler: uso estricto, simplemente no lo incluí en el ejemplo. – Jordan

Respuesta

17

Esto debe hacerlo:

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

my @result = grep { exists $hash{$_} } @array ; 
Cuestiones relacionadas