#! perl -slw use strict; use Benchmark qw[ cmpthese ]; open IN, '<', 'test.dat' or die $!; our @lines = ; close IN; print "Sorting ", scalar @lines, $/; cmpthese( -3, { ST => q[ my @sorted = map $_->[0], sort{ $a->[4] <=> $b->[4] } map [ $_, split /:/ ], @lines; ], XX => q[ my @sorted = sort{ substr( $a, 19 ) cmp substr( $b, 19 ) } @lines; ], GRT=> q[ my @sorted = map{ substr $_, 10 } sort map{ substr( $_, 20 ) . $_ } @lines; ], }); __END__ P:\test>318176 Sorting 1000 Rate ST XX GRT ST 6.70/s -- -65% -69% XX 19.1/s 186% -- -13% GRT 21.9/s 227% 14% --