my %hash = ( foo => 2, bar => 1, baz => 3, bun => 2, ); my @array = sort {$hash{$a} <=> $hash{$b}} keys %hash; #### my @array_of_hashes; push @array_of_hashes, "$hash{$_} => $_\n" for @array; #### use Data::Dumper; print Dumper(\@array_of_hashes); #### $VAR1 = [ '1 => bar', '2 => bun', '2 => foo', '3 => baz' ];