my %hash = ( 1 => 'A', 2 => 'B', 3 => 'C', ); foreach my $key (sort mysort(\%hash), keys %hash) { print "$key\n"; } sub mysort { print "mysort: \$_[0] = $_[0] ::: a = $a ::: b = $b\n"; return $_[0]->{$a} cmp $_[0]->{$b}; }