#!/usr/bin/perl use strict; use warnings; use Benchmark qw(:all); my %folders = ( Temp1 => 10, Temp2 => 100, Temp3 => 1000, Temp4 => 5000, Temp5 => 10000, # Temp6 => 20000, ); foreach my $folder (sort keys %folders) { print "Folder: $folder, Files: ", $folders{$folder}, "\n"; timethese(5, { 'Way 1' => sub { opendir(my $DIR, $folder) or die "Error: couldn't open dir '$folder': $!\n"; while(my $file = readdir $DIR) { my $filename = "$folder/$file"; if(-f $filename) { # print STDERR "$filename\n"; } } closedir($DIR); }, 'Way 2' => sub { foreach my $file (glob "$folder/*") { my $filename = $file; if(-f $filename) { # print STDERR "$filename\n"; } } }, 'Way 3' => sub { opendir(my $DIR, $folder) or die "Error: couldn't open dir '$folder': $!\n"; my @files = map { "$folder/$_" } grep { -f "$folder/$_" } readdir($DIR); closedir($DIR); foreach my $file (@files) { my $filename = $file; # print STDERR "$filename\n"; } }, }); }