Re: Sorting AofH over hash key(s)...
- From: "J. Gleixner" <glex_no-spam@xxxxxxxxxxxxxxxxxxxxx>
- Date: Tue, 30 Oct 2007 16:14:22 -0500
/usr/ceo wrote:
I've searched this NG, the web, and CPAN and haven't seen anything to
do this, and while I have a solution, I'm wondering what other
solutions might be living inside some other pretty brilliant brain
cages here on c.l.p.m...
The problem seems fairly straight-forward: I want to be able to sort
an Array of Hashes by an arbitrary number of hash keys. For instance,
given this hash:
my $h = [
{ color => 'red', size => 1, width => 640, height => 480 },
{ color => 'blue', size => 4, width => 800, height => 600 },
{ color => 'green', size => 2, width => 1024, height => 768 },
{ color => 'orange', size => 5, width => 320, height => 280 },
{ color => 'purple', size => 3, width => 40, height => 50 },
];
I'd like to sort by the keys: color, size, width, and/or height. I
realize for only ONE hash key, I can do:
for my $info (sort { $a->{color} cmp $b->{color} } @{$h}) { blah() }
#...
But... What if I want to sort by say... color and then size? Or
height and then width? Or all the keys in some order?
Just modify the sort to take into account the other keys.
sort {
$a->{ 'color' } cmp $b->{ 'color' } ||
$a->{ 'size' } <=> $b->{ 'size' }
}@{$h};
perldoc -q "How do I sort"
.
- References:
- Sorting AofH over hash key(s)...
- From: /usr/ceo
- Sorting AofH over hash key(s)...
- Prev by Date: Re: Sorting AofH over hash key(s)...
- Next by Date: Re: Sorting AofH over hash key(s)...
- Previous by thread: Re: Sorting AofH over hash key(s)...
- Next by thread: cpan module install woes - UTF-8 problem?
- Index(es):
Relevant Pages
|