#!/usr/bin/perl -w use strict; my @AoH = ( {a => 1, b => 2, c => 3}, {a => 1, b => 2}, {a => 1, b => 2, c => 3, d => 4}, {a => 1} ); sub mysort { # Awful abuse of Perl, here... (my $A = %$a) =~ s#/.*##; (my $B = %$b) =~ s#/.*##; $B <=> $A; } my $count = 0; print join("\t", $count++, keys %$_), "\n" for sort mysort @AoH; #### #!/usr/bin/perl -w 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 $count = 0; print join("\t", $count++, keys(%{$AoH[$_]})), "\n" for sort { keys(%{$AoH[$b]}) <=> keys(%{$AoH[$a]}) } 0 .. $#AoH;