> it works the same way, but I substituted in a Schwartzian transform to cache the original
> value of the heading instead of unpacking it again later. According to some tests with
> Benchmark, it's about 40% faster than doing the unpack later. Plus it keeps letters intact.
Unfortunately, there are two problems with this code:
@sorted =
map {$_->[0], ", "}
sort { $a->[0] <=> $b->[0]}
map {[$_, pack ("N*", $_)]}
@unsorted;
First, the map arguments should be reversed
or the
sort subscripts should be "1" not "0". As it is, all
the code does is a simple sort, and ignores the whole
pack part! Second, even when it is fixed, it does
not quite sort correctly:
@unsorted = qw(2 1.2a 2.2 1.2 1.1a);
## A fixed version:
@sorted =
map {$_->[0], ", "}
sort { $a->[1] <=> $b->[1]}
map {[$_, pack ("N*", $_)]}
@unsorted;
print @sorted, "\n";
## produces:
1.2a, 1.1a, 1.2, 2, 2.2