Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Perl - Sort a multi dimensional hash

by krishnashah (Initiate)
on Jan 16, 2013 at 23:16 UTC ( [id://1013657]=perlquestion: print w/replies, xml ) Need Help??

krishnashah has asked for the wisdom of the Perl Monks concerning the following question:

Hash looks like this:
$VAR1 = { Key1:Key1_si => { 'KeyA' => { Keya => 'abcd, defg', keyb => '1000', keyc => '80%', keyd => '2011.10.09', keye => '1234-UR-DDDD', keyf => 'rwh', keyg => '600', keyh => 'red', keyi => '900', keyj => '', keyk =>'int4678_tt', }, 'KeyB' => { Keya => 'abcd, defg', keyb => '2000', keyc => '100%', keyd => '2011.11.09', keye => '1234-UR-DDDD', keyf => 'rwh', keyg => '500', keyh => 'red', keyi => '400', keyj => '', keyk =>'int4678_tt', }, }, };
Question: I want to sort this hash on the basis of 'keyc' whose value is varied. So, I want to sort on the basis like below: Key1:Key1_si->KeyB->Keyc Key1:Key1_si->KeyA->keyc Also, I want to have the output with the sorted values along with the rest of attributes like : Print: Key1:Key1_si KeyB Keya keyd Keyc keyf Key1:Key1_si KeyA keya keyd Keyc keyf Can somebody please help me with the code in perl to perform sort as mentioned above. I will really appreciate your time and efforts.

Thanks, Krishna

Replies are listed 'Best First'.
Re: Perl - Sort a multi dimensional hash
by choroba (Cardinal) on Jan 17, 2013 at 02:30 UTC
    You cannot sort a hash. You can sort the keys, though:
    my %subhash = %{ $hash->{'Key1:Key1_si'} }; my @sorted_keys = sort { $subhash{$a}{keyc} <=> $subhash{$b}{keyc} } keys %subhash; for my $key (@sorted_keys) { print "Key1:Key1_si $key"; print ' ', $subhash{$key}{$_} for sort keys %{ $subhash{$key} }; print "\n"; }
    لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ
Re: Perl - Sort a multi dimensional hash
by LanX (Saint) on Jan 16, 2013 at 23:35 UTC
    Unreadable! Please edit your post and insert code and paragraph tags:

    paragraph <p> ... paragraph <p> ... <c> your($code); </c> paragraph <p> ...

    Cheers Rolf

Re: Perl - Sort a multi dimensional hash
by AnomalousMonk (Archbishop) on Jan 16, 2013 at 23:41 UTC
Re: Perl - Sort a multi dimensional hash
by krishnashah (Initiate) on Jan 17, 2013 at 00:41 UTC

    I hope you can see now. Please help me with the problem.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://1013657]
Approved by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (7)
As of 2024-04-23 21:04 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found