Can't stat e:: Unknown file or directory ???

A

Abe

I have a strange Perl problem I don't understand. I've written the
following program to scan different disks on a Windows server to look
for directory files. Works fine until it gets to 'e:' when I get this
warning:

Can't stat e:: Unknown file or directory

(If I don't have the "use warnings" in the code I get no message.)

There are folders and files on e:. I don't understand what the
problem is but I suspect there's some kind of syntax issue.

use File::Find;
use warnings;

@disks = ('h:','g:','f:','e:','d:');

$rfile = "sharebug.txt";
open (OFILE, ">$rfile") || die "Can't Open $rfile: $!\n";

foreach $disk (@disks)
{
printf ">>>Search disk: %s\n", $disk;
printf OFILE ">>>Search disk: %s\n", $disk;
@dir = ($disk);
find (\&wanted, @dir);
$dir = ();
}
close (OFILE);
exit;

sub wanted
{
use warnings;
$fname = $_;
if (-d $fname)
{
printf OFILE "$File::Find::name\n";
}
}


** Due to SPAM I no longer receive email responses to
** newsgroup postings, so don't bother.
 
J

Jim Gibson

Abe said:
I have a strange Perl problem I don't understand. I've written the
following program to scan different disks on a Windows server to look
for directory files. Works fine until it gets to 'e:' when I get this
warning:

Can't stat e:: Unknown file or directory

(If I don't have the "use warnings" in the code I get no message.)

There are folders and files on e:. I don't understand what the
problem is but I suspect there's some kind of syntax issue.

If it were a syntax issue, perl would tell you about it. It is more
likely a permissions issue. I don't have a Windows server to test your
program, however. It looks like your syntax is fine.

I can make some suggestions:


use strict;
use File::Find;
use warnings;

@disks = ('h:','g:','f:','e:','d:');

my @disks = ... # for this and all other variables
$rfile = "sharebug.txt";
open (OFILE, ">$rfile") || die "Can't Open $rfile: $!\n";

foreach $disk (@disks)
foreach my $disk ( @disks )
{
printf ">>>Search disk: %s\n", $disk;
printf OFILE ">>>Search disk: %s\n", $disk;
@dir = ($disk);

You don't need to define an array to pass to find(). Perl will form an
array from all of your parameters and pass it to the subroutine.
Therefore, 'find ( \&wanted, $disk );' works fine.
find (\&wanted, @dir);
$dir = ();

You don't need this in any case. There is no relation between $dir and
@dir (other than they live in the same glob).
}
close (OFILE);
exit;

sub wanted
{
use warnings;

There is no need to repeat 'use warnings' here.
$fname = $_;
if (-d $fname)
{
printf OFILE "$File::Find::name\n";
}
}

Last suggestion: post further questions to comp.lang.perl.misc. This
newsgroup is defunct.
 
A

Abe

Thanks. I just posted a slightly cleaned up version in the other
newsgroup.

I don't think it's a permission problem because if I change the
"@disk=" line to this:

@disks = ('h:','g:','f:','e:\\','d:');

It handles all the drives just fine.


If it were a syntax issue, perl would tell you about it. It is more
likely a permissions issue. I don't have a Windows server to test your
program, however. It looks like your syntax is fine.

I can make some suggestions:


use strict;


my @disks = ... # for this and all other variables

foreach my $disk ( @disks )


You don't need to define an array to pass to find(). Perl will form an
array from all of your parameters and pass it to the subroutine.
Therefore, 'find ( \&wanted, $disk );' works fine.


You don't need this in any case. There is no relation between $dir and
@dir (other than they live in the same glob).


There is no need to repeat 'use warnings' here.


Last suggestion: post further questions to comp.lang.perl.misc. This
newsgroup is defunct.


** Due to SPAM I no longer receive email responses to
** newsgroup postings, so don't bother.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,013
Latest member
KatriceSwa

Latest Threads

Top