opendir and if -d $files problem
I am writing a very simple script that should return all
subdirectories on a given path (non recursively, so just first level).
This is the sub that I have for doing this but it gives very strange
my ($dir) = @_ ;
my @files ;
opendir THISDIR, $dir or die "Error, cannot do opendir on $dir $!"
my @allfiles = readdir THISDIR ;
closedir THISDIR ;
foreach my $file (@allfiles)
#if (-d $file)
# print $file."\n";
push @files, $file if (-d $file) ;
When I run this on the same path as the script is located ('.') it
gives me the correct results.
If I give a path along of where to check, it gives me a few of the
subdirs (for example on the C: drive it would give me the TEMP, the
WINDOWS and the RECYCLER directory, but not the PROGRAM FILES or some
other dirs I have.
I am using Perl 5.8 on a Windows XP machine.
Can anyone shed some light on this strange problem?
Re: opendir and if -d $files problem
Bob Gervais <email@example.com> wrote:
> opendir THISDIR, $dir or die "Error, cannot do opendir on $dir $!";
> my @allfiles = readdir THISDIR ;
[ snip ]
> When I run this on the same path as the script is located ('.') it
> gives me the correct results.
The problem is that readdir() returns filenames, not full paths.
my @subdirs = grep -d, map "$dir/$_", readdir(THISDIR);
[ This group is defunct; please use clp.misc instead. ]
|All times are GMT. The time now is 10:01 AM.|
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.