The preprocess sub is called for each directory that File::Find descends into. It's called before the wanted sub as a sort of filter. $File::Find::dir contains the name of the current directory being processed, including any leading path...like '/foo/bar/the-current-directory'.
@_ contains the list of files/directories in this current directory. You choose what portion of @_ you return. If you return @_...it's a no-op, things go as normal. If you return nothing, then it will not descend below this current directory, and will not return the files in the current directory either. If you return some subset of @_, it will descend into only those directories, and only pass those files to the wanted sub.
The code I gave won't likely work exactly for what you're trying to do, as I'm not sure I fully understand what you're doing. You'll need to figure out what you want to filter out of @_. As written, it returns nothing if the pattern matches, pruning at that point, and everything if the pattern doesn't match.
In reply to Re^3: Limiting file:find depth question
by kschwab
in thread Limiting file:find depth question
by RockE
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |