use Data::Dumper; my @aoh = ({doc1=>2345}, {doc2=>1234}, {doc3=>5678}, {doc4=>4567}); my @sorted_aoh = sort { (%$a)[1] <=> (%$b)[1] } @aoh; print Dumper \@sorted_aoh; __output__ $VAR1 = [ { 'doc2' => 1234 }, { 'doc1' => 2345 }, { 'doc4' => 4567 }, { 'doc3' => 5678 } ];