Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: "Deep recursion" error

by sundialsvc4 (Abbot)
on Jun 28, 2013 at 16:28 UTC ( #1041285=note: print w/ replies, xml ) Need Help??


in reply to "Deep recursion" error

Even if you don’t choose to use a File::Find type module, you certainly can use their core techniques ... which don’t involve recursion.   Instead, they use a simple push-down stack.

You start by pushing the starting location on the stack.   Then, something like this:

while (the stack is not empty) { pop a name off the stack search that directory for entries: -- if it is "." or ".." then SKIP it. (Guess this is what you're +not doing.) -- if it is a directory, "push" or "unshift" the fully-qualified n +ame onto the stack. -- if it is a file, process it, or stack it on another queue it to + be processed soon. }

If you push the names, you get a “depth-first” search; if you unshift them, “breadth-first.”

This also circumvents another file-system bugaboo, especially noticeable in Windows:   the number of active “searches” that you can actually have going at one time, and the problem of interference between them.   Only one search is actually going-on at one time.


Comment on Re: "Deep recursion" error
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1041285]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (17)
As of 2015-07-06 20:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (83 votes), past polls