i hate to get picky, but your Schwartzian transform doesn't look like
merlyn's to me.
perlmonkey's:
my @sorted =
map{ $_->[0] }
sort {$a->[1] cmp $b->[1]}
map { m/(.*?)\s*(\S+)$/; [$_, "$2 $1" ] }
@unsorted;
merlyn's:
my @output =
map { $_->[1] }
sort { $a->[0] cmp $b->[1] }
map { [$_, expensive_func($_)] }
@input;
is this because the ST is more general than i thought, or is there a typo in
merlyn's ST writeup? i'm not sure i'm comfortable with any sort that compares
$a->[0] to
$b->[1]... is there ever a good reason to do that?
update: looks like merlyn's changed his to compare index 1 of both arrays. which is almost a shame; i was hoping there was some really cool reason to compare different indices. but anyway, i withdraw the question.