Ricky
Ricky

Reputation: 115

Looping through an array of hashes in Perl

I'm a total Perl newbie, so forgive me if this is really stupid, but I can't figure this out. If I have an array like this:

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

What's the most simple way to loop through this array? I thought something like this would work:

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

But it doesn't. I guess I'm too stuck with a PHP mindset where I could just do something like:

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

Upvotes: 9

Views: 12899

Answers (1)

mscha
mscha

Reputation: 6830

@array contains hash references, so you need to use -> to derefecence.

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

See also the documentation, for instance perldoc perlreftut and perldoc perlref.

Upvotes: 28

Related Questions