perlquestion
Boghog
Greetings Monks,<br>
I wanted to sort an array of hashes based on the size of each hash (i.e., the number of the key/value pairs in each hash) using something like:<br>
<code>
#!/usr/bin/perl
use strict;
my @AoH = (
{a => 1, b => 2, c => 3},
{a => 1, b => 2},
{a => 1, b => 2, c => 3, d => 4},
{a => 1}
);
my @AoH_sorted = sort { keys(%{$AoH[$b]}) <=> keys(%{$AoH[$a]}) } @AoH;
foreach my $i (0 .. $#AoH_sorted) {
print "$i\t";
if (exists $AoH_sorted[$i]) {
my %hash = %{$AoH_sorted[$i]};
foreach my $key (keys %hash) {
print "$key\t";
}
}
print "\n";
}
</code>
However the above script produces the following output which obviously has not been sorted:
<code>
0 c a b
1 a b
2 c a b d
3 a
</code>
Any ideas on how to get this sort to work? Thanks!