use File::Find; my $limit= 4; # Whatever you prefer for ($name = 1; $name <= $limit; ++$name) { find(\&Wanted, $dir); } #### sub Wanted { # /$name\.*/; # NO! You want $name at the beginning! #### if (/^$name\./) { # if undef { #### # $name++; # return; # } else { open(FILE, $_); my @lines = ; # some processing missing here? } }