#!/usr/bin/perl -w use Strict; use File::Stat; use Digest::MD5; print "Enter the Path where all the data files are available:\t"; $sourcedir= ; chomp($sourcedir); open(LOG ,">>D:\\prad\\log1.csv"); #$workbook = Spreadsheet::WriteExcel->LOG('D:\prad\log1.csv'); print LOG "Report Ver - 0.1\n"; print LOG"_______________________________\n"; print LOG "\nFilename,Md5sum(oneof),Size,Md5Sum(oneofcmd_cln),Size,Md5Sum(oneofgsd_cln),Size"; print LOG"\n___________________________________________\n"; list_recursively("$sourcedir\\oneof"); exit; ################################################################################ # Subroutine ################################################################################ # list_recursively # # list the contents of a directory, # recursively listing the contents of any subdirectories # sub list_recursively { my($directory) = @_; my @files = ( ); # Open the directory unless(opendir(DIRECTORY, $directory)) { print "Cannot open directory $directory!\n"; exit; } # Read the directory, ignoring special entries "." and ".." @files = grep (!/^\.\.?$/, readdir(DIRECTORY)); closedir(DIRECTORY); # If file, print its name # If directory, recursively print its contents # Notice that we need to prepend the directory name! foreach my $file (@files) { # If the directory entry is a regular file if (-f "$directory/$file") { $filepath="$directory"; $filepath2=$filepath; $filepath2=~s/oneof/oneofcmd_cln/; $filepath3=$filepath; $filepath3=~s/oneof/oneofgsd_cln/; #Finding the size of the file #digesting open(FILE ,"<$filepath\\$file"); binmode (FILE); $file_size="$filepath\\$file"; @st = stat($file_size) or die "No $file: $!"; $digest = Digest::MD5->new->addfile(*FILE)->hexdigest; #print file name in Log file print LOG "\n$filepath\\$file"; printf LOG",%s,%s",$digest,$st[7]; close(FILE); if(open(FILE, "<$filepath2\\$file")) { #print LOG "in MD2"; binmode (FILE); $file_size="$filepath2\\$file"; @st = stat($file_size) or die "No $file: $!"; $digest = Digest::MD5->new->addfile(*FILE)->hexdigest; printf LOG",%s,%s",$digest,$st[7]; close(FILE); } else{ print LOG",Null,";} if(open(FILE, "<$filepath3\\$file")) { #print LOG "in MD3"; binmode (FILE); $file_size="$filepath3\\$file"; @st = stat($file_size) or die "No $file: $!"; $digest = Digest::MD5->new->addfile(*FILE)->hexdigest; #print file name in Log file #print LOG "$filepath3\\$file"; printf LOG",%s,%s",$digest,$st[7]; #here i need to include a formula into the csv file at the #end of each line. close(FILE); } else{ print LOG",Null";} # If the directory entry is a subdirectory }elsif( -d "$directory/$file") { # Here is the recursive call to this subroutine print LOG"\nFolder - $directory\\$file \n"; print LOG"----------------------------------\n"; list_recursively("$directory\\$file"); } } } ################################################################################