use strict; use warnings; use File::Find; use Benchmark qw { cmpthese }; my @files = (); my $rcWanted = sub { push @files, $File::Find::name; }; find( $rcWanted, q{/usr/bin} ); cmpthese( -5, { Direct => sub { my $raSorted = useDirect() }, ST => sub { my $raSorted = useST() }, } ); sub useDirect { my @sorted = sort { lstat( $b ) <=> lstat( $a ) } @files; return \ @sorted; } sub useST { my @sorted = map { $_->[ 0 ] } sort { $b->[ 1 ] <=> $a->[ 1 ] } map { [ $_, lstat( $_ ) ] } @files; return \ @sorted; }