Hello Forum,

 I am in need to write a script which will count the number of files
and directories in a given directory. It will also record the
statistics of the directory within the main directory.
   I have thought of a hash structure like
   %hash = {
        filecnt => value,
        dircnt => value,
        dir1 => {
                         filecnt => value,
                         dircnt => value,
                         dir1 =>{ ...}

                   },
           dir2 => {
                         filecnt => value,
                         dircnt => value,
                         dir1 =>{ ...}

                   },

   }


+++++++++++++++++++++++++++++

My question is.. Is there already a perl module which will be able to
parse the directory structure and give me the required output. If not
then following is the code I am working on, however I am getting
confused in using the recursive functionality. Can someone guide me on
this.

My code looks like

use strict;
use warnings;
use Data::Dumper;

my %hash_dir; # this structure will hold the actual directory
structure
my ($file_cnt,$dir_cnt);
my $root = 'f:/dashboard1';
diropen ($root);

#### fmethod to open the directory
sub diropen{
        my $dir_name = shift;
        opendir (DH, $dir_name) or die "can't opent the directory $@";
        my @files_arr = readdir (DH);
    dir_browse([EMAIL PROTECTED]);
}

### method to get the statistics of the directory.

sub dir_browse{
        my $ref_files_arr = shift;
        my @files_arr = @$ref_files_arr;
        foreach  (@files_arr) {
                        unless ($_ =~ /\.|\.\./) {
                                print "$_\n";
                                if (-f $_) {
                                                $file_cnt++;
                                }
                                else{
                                                $dir_cnt++;
                                }
                        }
                        $hash_dir{dir_cnt}  = $dir_cnt if (defined $dir_cnt);
                        $hash_dir{file_cnt} = $file_cnt if (defined $file_cnt);
        }
}


print Dumper %hash_dir;


+++++++++++++++++++


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to