I am trying to write a script that will run through a directory, check if something is a file and print the filename, and if it is a directory, descend into the directory and print all files filenames, then go back up a directory and finish printing the files in the starting directory. A recursive script. This is my code:
#!/usr/bin/perl -w
use strict;
my $dir = `pwd`;
sub start {
foreach (<$dir*>) {
print "$_\n" if (-f $_);
if (-d $_) {
$dir = $_;
&start;
}
}
}
&start;
When I run this, I'm getting the message "Deep recursion on subroutine "main::start" at ./archive.pl at line 14". I know I'm doing something wrong, but I can't figure out what it is. I guess I am missing a "base case" to make the loop stop, but I don't know how to add a base case in this situation.
Also, this is just a personal project. I don't want to use other perl modules to make it easier. I want to look at each file individually.