in reply to Descending a directory tree, returning a list of files

You open a DIR handle but, as you encounter a folder you jump out of the process and reopen the same handle with another directory. it is not so logic. This was my first problem too using Perl (and we are in good company!) and this is also a Faq. Since that times i always use the tachyon's solution.

Try adding some print statements to see how things go on in your flow.
my $cwd = getcwd; print "CWD:$cwd\n"; ## Get files from cwd my $res = _list_files($cwd); sub _list_files { my $dir = shift; my $files = shift; print "GETTING:$dir\n"; opendir(DIR, $dir) or die "Error opening: $dir\n"; while (my $fn = readdir(DIR)) { ## skip hidden next if $fn =~ /^\./; ## file, fullpath name my $file = $dir . "/" . $fn; print "FILE:$file\n"; ## add push(@{ $files }, $file); ## dir, decend if (-d $file) { print "DIR:$file\n"; ## sub-directory files $files = _list_files($file, $files); } } closedir(DIR); return $files; }

HtH
L*
There are no rules, there are no thumbs..
Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.