Keep in mind that perl currently doesn't do nested subs (this is the souce of many a warning for those using Apache::Registry with mod_perl; see the mod_perl guide for a detailed explanation).
You could possibly return a list of coderefs that you create and use sort_em more as a sort routine factory.
sub sort_em { my $src = shift; return { up => sub { $src->{$a} <=> $src->{$b} }, down => sub { $src->{$b} <=> $src->{$a} }, } } my %numbers = ( qw( a 5 c 4 d 1 ) ); my $num_sorts = sort_em( \%numbers ); print "UP:\n", join( "\n", map { "$_ $numbers{$_}" } sort { $num_sorts->{up}->() } keys %numbers ), "\nDOWN\n", join( "\n", map { "$_ $numbers{$_}" } sort { $num_sorts->{down}->() } keys %numbers ), "\n";
In reply to Re: Scoping issue when sorting with subroutines
by Fletch
in thread Scoping issue when sorting with subroutines
by Dave05
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |