in reply to A generic sorting problem
A solution could be to take advantage of the possibility to feed sort a reference to a sorting subroutine. That way you could check if the first element is a number (for example with $array[0] =~ /^\d+$/) and select the right subroutine:
my @array = (12,23,34,56,876,324,13) ; # Use the array below to test for alphas #my @array = qw(mamma ninnonnina domani festa din don dan) ; my $sortsub ; my $sortnum = sub { $a <=> $b } ; my $sortalpha = sub { $a cmp $b } ; $sortsub = $array[0] =~ /^\d+$/ ? $sortnum : $sortalpha ; my @sorted = sort $sortsub @array ; print map "$_\n",@sorted ;
Note however that this approach is far from optimal in this case. In fact when the array contains alphas you replace the fast native sorting with a slower $sortalpha. This approach is better suited for selecting a sort sub in more complicated sorting.
Ciao!
--bronto
# Another Perl edition of a song:
# The End, by The Beatles
END {
$you->take($love) eq $you->made($love) ;
}
|
---|