Yes. Sorry, I should have realized that a "natural sort" doesn't handle that (the negative sign distributes across to the minutes field but the "natural sort" is not aware of this).
Though you can still use a natural sort, you just have to process the leading sign separately. For example:
my @deltas= qw(
-6h0m -0h42m +0h18m -12h50m +11h39m
0h2m +1h7m -12h8m -0h25m 0h0m );
@deltas= do {
my( @sort, %sort )= map {
local($_)= $_;
my $sign= s#^([-+]?)## && $1;
s#(\d+)# "\x80" ^ pack"N",$sign.$1 #ge;
$_;
} @deltas;
@sort{@sort}= @deltas;
@sort{ sort @sort };
};
print "@deltas\n";
Though just for fun I switched from an index sort to a key sort so this version drops identical values. (:
-
tye
(but my friends call me "Tye") |