A simple test shows what is going on:

use strict; use warnings; use File::Find; find (\&wanted, '..'); sub wanted { if (-e $File::Find::name) { print "Found $File::Find::name\n"; } else { print "Didn't find $File::Find::name\n"; } }

Prints in part (Windows XP):

Found .. Didn't find ../Ook.pl Didn't find ../test2.out.txt Didn't find ../test2.pl Didn't find ../test2.txt Didn't find ../test3.txt Didn't find ../test4.txt Didn't find ../Job Found ../Job/Func.pm Found ../Job/Game.pl Found ../Job/Game.pm Found ../Job/1st Didn't find ../Job/1st/Func.pm Didn't find ../Job/1st/Game.pl Didn't find ../Job/1st/Game.pm Didn't find ../tk Found ../tk/tkTest.pl Found ../tk/tkTest.vpd

From which you can see that the directory passed into find is concatenated onto the front of the relative path. That is just fine if the path passed in is absolute, but can be a real pain if it it is relative because (from the find docs):

Additionally, for each directory found, it will chdir() into that directory

means that the path is broken when the directory is changed away from the current directory when the find was called.

You can fix the problem by specifying no_chdir thus:

find ({wanted => \&wanted, no_chdir => 1}, '..');

DWIM is Perl's answer to Gödel

In reply to Re: using file::find::name and file tests by GrandFather
in thread using file::find::name and file tests by richill

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.