in reply to Scoping issue when sorting with subroutines
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";
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Scoping issue when sorting with subroutines
by broquaint (Abbot) on Apr 12, 2002 at 15:49 UTC |