cspctec has asked for the wisdom of the Perl Monks concerning the following question:
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:
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.#!/usr/bin/perl -w use strict; my $dir = `pwd`; sub start { foreach (<$dir*>) { print "$_\n" if (-f $_); if (-d $_) { $dir = $_; &start; } } } &start;
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.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: "Deep recursion" error
by BrowserUk (Patriarch) on Jun 28, 2013 at 16:15 UTC | |
Re: "Deep recursion" error
by sundialsvc4 (Abbot) on Jun 28, 2013 at 16:28 UTC | |
Re: "Deep recursion" error
by Laurent_R (Canon) on Jun 28, 2013 at 17:55 UTC | |
Re: "Deep recursion" error
by RichardK (Parson) on Jun 28, 2013 at 18:07 UTC | |
Re: "Deep recursion" error
by cspctec (Sexton) on Jun 28, 2013 at 17:53 UTC | |
by poj (Abbot) on Jun 28, 2013 at 19:07 UTC | |
by cspctec (Sexton) on Jun 28, 2013 at 19:35 UTC |
Back to
Seekers of Perl Wisdom