use strict; use warnings; my $dir = shift; my $criteria = shift; $criteria = "" unless defined $criteria; die "Usage: $0 directory" unless defined $dir; opendir DIR, "$dir" or die "Could not open $dir: $!\n"; my @files=grep(/$criteria/, readdir DIR); print $#files+1, " files\n"; chdir $dir; foreach my $file (@files) { # actions go here } closedir DIR;