You haven't reproduced my failure scenario, which requires that the target directory be a drive letter with no other path info. Try this:
cd /d e:\windows
cd /d c:\
find({ no_chdir => 1, wanted => sub { print if -d } }, 'E:' );
But I've discovered more about this bug. Try this:
cd /d c:\
mkdir test\windows\foo
cd test
cd /d e:\
perl -MFile::Find -e "$\=$/; find( sub { print if -d }, 'c:' );"
Output is just as you'd expect:
.
windows
foo
But if you run
perl -MFile::Find -e "$\=$/; find({ no_chdir => 1, wanted => sub { pri
+nt if -d } }, 'c:' );"
you get unexpected (erroneous) output:
. . .
c:/windows/$hf_mig$/KB898461/update
c:/windows/$MSI31Uninstall_KB893803$
c:/windows/$MSI31Uninstall_KB893803$/spuninst
c:/windows/$NtServicePackUninstall$
c:/windows/$NtServicePackUninstall$/spuninst
c:/windows/$NtUninstallKB816486$
. . .
c:/windows/ADDINS
c:/windows/AppPatch
c:/windows/assembly
c:/windows/assembly/GAC_32
c:/windows/assembly/GAC_32/CustomMarshalers
c:/windows/assembly/GAC_32/CustomMarshalers/2.0.0.0__b03f5f7f11d50a3a
. . .
In other words, if it finds a subdirectory of the target directory named X,
it searches under C:\X, even if the target directory is not C:\.
It's definitely a bug.
A word spoken in Mind will reach its own level, in the objective world, by its own weight
|