##
$sorter = \&my_sorter;
foreach my $key (sort { &$sorter(\%hash) } keys %hash ) {
# do something useful
}
sub my_sorter {
my ($hashref) = @_;
return $hashref->{$a} cmp $hashref->{$b};
}
####
$sorter = \&my_sorter;
foreach my $key (
map { $_->[0] }
sort { &$sorter }
map { [ $_, $hash{$_} ] }
keys %hash
) {
# do something useful
}
sub my_sorter {
return $a->[1] cmp $b->[1];
}