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