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

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.