Store all those little subroutines in an array.
If I understand you correctly, that would entail changing my original code only with respect to what gets assigned to $mysortref:
my $mysortref = do { my @littlesubs = ( sub { lc($data{$a}[0]) cmp lc($data{$b}[0]) }, sub { lc($data{$a}[1]) cmp lc($data{$b}[1]) }, ); sub { foreach my $sub (@littlesubs) { my $result = $sub->($a, $b); return $result if $result; } }; }; @results = sort $mysortref (keys %data);
But I don't see where that gets me any closer to solving my original problem. To change the sort formula I still, AFAICT, have to change the hard-coded subs which are now elements in @littlesubs.
jimk
In reply to Re^2: Building a sorting subroutine on the fly
by jkeenan1
in thread Building a sorting subroutine on the fly
by jkeenan1
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |