(quote from below): "The file separator in perl is '/', not '\\'"
That's not necessarily true. It depends on the module and the context. Many
modules will take the path in either format. In this case Perl was
interpreting their code correctly, because otherwise it would not have given
the error indicated by the OP.
Remember that File::Find tries to change the current directory to be the
directory of the file it is currently scanning. The "System Volume
Information" folder is blocked by the OS, so this error will happen. I can
think of two solutions off the top of my head (I don't have time to test).
1) You could try taking off the "Show Hidden Files and Folders" option in
Explorer, but depending on what you're looking for, this might keep you from
searching through some of the files you need.
2) Do something like this:
##############
use strict;
use warnings;
opendir(DIR,"c:\\") or die("Couldn't open 'c:\\' for reading!\n");
my @startDirs = readdir(DIR);
#for each directory that is not the System Volume Information folder
foreach my $dir(sort @startDirs){
if((-d $dir) && ($dir ne 'System Volume Information')){
find(\&wanted,"c:\\$dir");
}
}
###############
-----Original Message-----
From: Charles K. Clarkson [mailto:[EMAIL PROTECTED]
Sent: Mon 12/26/2005 1:52 PM
To: [email protected]
Cc:
Subject: RE: file :: find problem
<snip>
:
: find(\&wanted, "c:\\"
The file separator in perl is '/', not '\\', functions parenthesis
must match, and you should use single quotes by default.
find( \&wanted, 'c:/' );
<snip>