It's because you've mixed up a hash of hashes with an array of hashes. %people is clearly a hash; but the thing after the = is an array of two hashes. But since, in Perl, hashes are a special kind of array, Perl just took you at your word that you wanted to treat this array as a hash.
The end result is, %people is a hash with one key-value pair: the key is { name => "fred", age => 31, } and the value is { name => "bill", age => 32, }! I know that's not what you wanted, but it's what you told Perl to do!
You'd get the output you want with
my @people = (
{
name => "fred",
age => 31,
},
{
name => "bill",
age => 32,
}
);
for (@people) {
print "$_->{'name'}: $_->{'age'}\n";
}
By the way, to make your posts easier to read, you can enclose your code with <code> tags!
§ George Sherston | [reply] [Watch: Dir/Any] [d/l] [select] |