opendir FILES, $dirname or die "Can't open $dirname:$!\n"; chdir $dirname; #to make sure we're in the right directory! # build the hash, in one line! YES! IF YOU ACT NOW, ALL THIS AND MORE # CAN BE YOURS! ... my %files = map {$_ => -M $_} grep { !/^\.{1,2}$/ } readdir FILES; closedir FILES; foreach my $file ( sort { $files{$a} <=> $files{$b} } keys %files) { printf("file %s was last modified %.2f days ago", $file, $files{$file}); }