my @sorted=map substr($_,4), sort map pack(N => (stat)[9]) . $_, @files; #### my $len=length pack I => 1; my @sorted=map substr($_,$len), sort map pack(I => (stat)[9]) . $_, @files; #### #!/usr/bin/perl use strict; use warnings; use Benchmark qw/:all :hireswallclock/; map substr($_,4), sort map pack(N => stat) . $_, @_; my @files=glob '*'; my %time=map {$_ => (stat)[9]} @files; sub spack { map substr($_,4), sort map pack(N => $time{$_}) . $_, @_; } sub sprf1 { map substr($_,10), sort map sprintf('%010u' => $time{$_}) . $_, @_; } sub sprf2 { map substr($_,8), sort map sprintf('%08x' => $time{$_}) . $_, @_; } sub chk { my @a=(0,@_); shift @a <= $_ or return for @_; 1; } my @sub=qw/spack sprf1 sprf2/; for (@sub) { no strict 'refs'; chk map $time{$_}, &{$_}(@files) or die "Error with sub '$_'\n"; } cmpthese -30, { map { $_ => "$_(\@files)" } @sub }; __END__ #### Rate sprf2 sprf1 spack sprf2 756078/s -- -7% -24% sprf1 811970/s 7% -- -18% spack 991485/s 31% 22% -- #### Rate sprf2 sprf1 spack sprf2 319/s -- -6% -21% sprf1 340/s 6% -- -16% spack 403/s 26% 19% --