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";