in reply to Scoping issue when sorting with subroutines

Maybe something like this is what you wanted? It is rather on the dark side of the force but it may be what you want.
#!/usr/bin/perl -w use strict; my @l = (2, 4, 19, 3, 15, 30, 1, 31, 14); print sort {&{bysort("up")}} @l; print $/; print sort {&{bysort("dn")}} @l; print $/; sub bysort { my $by = shift; if ($by eq "up") { return sub { $a <=> $b }; } elsif ($by eq "dn") { return sub { $b <=> $a }; } else { return sub { $a cmp $b }; } }

--
$you = new YOU;
honk() if $you->love(perl)