I don't know if this helps for anything, this doesn't Iterate Recursively as shown, but I use readdir in the following code to create an array $dots of filenames from a directory, excluding any "." prefix in unix. Then I can grep out anything I don't want to operate on, etc. Or in this case put the contents of all the files into a single array $foo, then grep out or split out whatever I'm looking for. I think it can be modified to do something useful without a module.

$sd = "../data/data_forthis";
opendir( DIR, $sd) || die;
while( ($filename = readdir(DIR))){
next if "$sd\/$filename" =~ /\/\./;
push @dots, "$sd\/$filename";
} ## end of while
@dots = sort @dots;
closedir(DIR);
for(my $a=0;$a<@dots;$a++){
open (FILE, $dots[$a]);
push @foo, <FILE>;
if ($a+1 eq @dots) {
close FILE;
open (FILE, $dots[$a]);
push @foo2, <FILE>;
} ## end of if
close FILE;
} ## end of for
### At this point @foo has everything and $foo2 has just the last file+ in the directory...