2011-01-20 43 views
9

Soy un novato total de Perl, así que perdóneme si esto es realmente estúpido, pero no puedo resolverlo. Si tengo una matriz como esta:Looping a través de una matriz de hashes en Perl

my @array = (
    {username => 'user1', email => '[email protected]' }, 
    {username => 'user2', email => '[email protected]' }, 
    {username => 'user2', email => '[email protected]' } 
);

¿Cuál es la forma más simple de recorrer esta matriz? Pensé que algo así funcionaría:

print "$_{username} : $_{email}\n" foreach (@array);

Pero no es así. Creo que soy demasiado pegado con una mentalidad de PHP, donde tan sólo pudiera hacer algo como:

foreach ($array as $user) { echo "$user['username'] : $user['email']\n"; }

Respuesta

28

@array contiene referencias de hash , por lo que es necesario utilizar -> a derefecence.

print "$_->{username} : $_->{email}\n" foreach (@array); 

Véase también la documentación, por ejemplo perldoc perlreftut y perldoc perlref.

+0

Oh Dios, me siento tan tonto ahora. ¡Gracias! – Ricky

+2

también podría escribirse 'decir" $$ _ {username}: $$ _ {email} "para @array;' –

Cuestiones relacionadas