Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Re: Sorting hash keys according to different criteria

by Anonymous Monk
on Jun 24, 2003 at 20:57 UTC ( #268677=note: print w/replies, xml ) Need Help??


in reply to Re: Sorting hash keys according to different criteria
in thread Sorting hash keys according to different criteria

Hi, Can I ask why this only prints one item in the hash array?
my %people; %people =( { name => "fred", age => 31, }, { name => "bill", age => 32, }); my $length = keys %people ; print "$length\n"; foreach my $key (sort keys %people) { print("$people{$key}{'name'}: $people{$key}{'age'}\n"); }

Code tags - dvergin 2003-06-24

Replies are listed 'Best First'.
Re: Re: Re: Sorting hash keys according to different criteria
by George_Sherston (Vicar) on Jun 24, 2003 at 21:46 UTC
    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

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://268677]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (4)
As of 2019-05-25 04:12 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you enjoy 3D movies?



    Results (151 votes). Check out past polls.

    Notices?
    • (Sep 10, 2018 at 22:53 UTC) Welcome new users!