sub readindirs { my ($dirname) = @_; opendir(NEWDIR, $dirname) or die $!"; my @newfiles = grep { $_ ne '.' and $_ ne '..' } readdir NEWDIR; closedir NEWDIR; foreach my $name (@newfiles) { if (-d $name) { readindirs($name); } else { parse_sub_routine($name); } } }