c:\@Work\Perl\monks>perl -wMstrict -MData::Dump -le "my %funcs = qw(1 a 2 aa 3 aaa 4 z 5 zz 6 b 7 bb); dd \%funcs; ;; my @sorted_keys = sort { $funcs{$a} cmp $funcs{$b} } keys %funcs; dd \@sorted_keys; ;; my @sorted_vals = @funcs{@sorted_keys}; dd \@sorted_vals; ;; print qq{'$_' -> '$funcs{$_}'} for @sorted_keys; " { 1 => "a", 2 => "aa", 3 => "aaa", 4 => "z", 5 => "zz", 6 => "b", 7 => "bb" } [1, 2, 3, 6, 7, 4, 5] ["a", "aa", "aaa", "b", "bb", "z", "zz"] '1' -> 'a' '2' -> 'aa' '3' -> 'aaa' '6' -> 'b' '7' -> 'bb' '4' -> 'z' '5' -> 'zz'