use strict;
my $f; # number of files
my $d; # number of dirs
sub count_files
{
my ($ref) = @_;
foreach my $dir (@$ref)
{
$dir = readlink $dir and chop $dir if -l $dir; # read link
next unless opendir(my $dir_h, $dir); # open dir o
++r next
my @dirs;
while (defined(my $file = readdir $dir_h))
{
if ($file eq '.' or $file eq '..') {
next;
}
if (-d "$dir/$file")
{
++$d; # counting d
+irs
push @dirs, "$dir/$file";
}
elsif(-f _)
{
++$f; # counting f
+iles
}
}
closedir $dir_h;
count_files(\@dirs);
}
[$f, $d];
}
foreach my $arg (@ARGV)
{
my @dir = -d $arg ? $arg : next;
($f, $d) = (0, 0);
print "$arg\nFiles\t: $$_[0]\nFolders\t: $$_[1]\n" for count_files
+(\@
dir);
}
suggest a faster method and also how to run without using my @files = `attrib /s c:\\*`; my $n = scalar @files;
|