... print "\nAnd here comes the result of sorting the keys of that hash\n"; my $sort_function = ($demo eq 'problem') ? sub { $distance{$b}->value <=> $distance{$a}->value } : sub { $distance{$b} <=> $distance{$a} }; for my $place (sort $sort_function keys %distance) { printf "%10s is %25.15f km from here\n", $place, $distance{$place}; } }