#!/usr/bin/perl -w use strict; my %email_owners = ('mike@foo.net' => 'Mike Foo', 'jwtheis@smic.net' => 'Jim Theis', 'happy@bobbarker.net' => 'Happy Gilmore'); foreach (keys %email_owners) { print "Owner: $email_owners{$_}\n"; print "E-mail: $_\n"; }
Because of the way you have the loop setup, you will go through the @addys array completely for every element in @owners, so by having three elements in @owners and three in @addys, you end up printing 9 emails. By splitting the hash into two arrays, you ended up disassociating the keys from the values.
If you really wanted to do it with two arrays, you could use something like this:
for(0 .. $#owners) { print "Owner: $owners[$_]\n"; print "E-mail: $addys[$_]\n"; }
But then you really defeat the whole purpose of the hash.
| We're not surrounded, we're in a target-rich environment! |
|---|
In reply to Re: First time using hashes
by jasonk
in thread First time using hashes
by IPstacks
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |