#!/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__