#!/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;