in reply to First time using hashes

#!/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!