http://qs1969.pair.com?node_id=41696


in reply to Dynamic sort algorithm selection

What version of Perl are you using? This works for me:
#!/usr/bin/perl -w use strict; my $sortname = shift; print join ' ', sort $sortname 1..20; sub num { $a <=> $b } sub alpha { $a cmp $b }
Save this as foo.pl, and...
% foo.pl num 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 % foo.pl alpha 1 10 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8 9
This is consistent w/ the sort docs:
SUBNAME may be a scalar variable name (unsubscripted), in which case the value provides the name of (or a reference to) the actual subroutine to use. In place of a SUBNAME, you can provide a BLOCK as an anonymous, in-line sort subroutine.
However, I do seem to remember running into your situation in the past. I don't know what version of Perl I was using then; probably 5.004 or some such. I'm now using 5.005_03, which could explain it.

If you are using a real database, though, I would suggest that you try using "order by", as it's likely to be faster than anything you can do yourself, particularly if you have your columns indexed.