File::Find is a weird critter as it doesn't have a return value. This is a recursive descent deal that runs a subroutine on every file from starting directory. (note: that a directory name is a file!).

there is no return value from File::Find, you need to use a "global" var to get this...

here is example code.....

#!/usr/bin/perl -w use File::Find; use strict; my @dirs; find (\&dirs_deny_grp_other, $ENV{'HOME'}); print join ("\n",sort @dirs),"\n"; sub dirs_deny_grp_other { return if ! -d || !stat; if ( ( (stat "$File::Find::name")[2] & 011) == 0 ) { push @dirs, $File::Find::name; } }
Your "wanted" sub should push @result, $File::Find::name if ( /hello\.txt$/ ) where @result has higher scope than sub with File:Find. There is no way for File::Find to use the return value of "wanted". You have to use a higher scoped var for this "return function".

Update: the above code looks for directories. It is more complex than what you need to do, but if you understand it, your code will be simple to do. Your code would return if -d (only look at files that are not directories). If you want to look at and find all files that match /hello\.txt$/i, you will have to look at every file in every sub-directory.


In reply to Re: 2 Questions on File::Find by Marshall
in thread 2 Questions on File::Find by bichonfrise74

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.