there are commented print statements in two places which look like this :- #print "$key\n"; uncomment them and you will get what you want
here is the full code for that... changes are marked by comments ############################################################################ ########################### compare("c:\\program files","d:\\program files"); #Example call sub compare($$){ my ($p1, $p2) [EMAIL PROTECTED]; print "comparing $p1 and $p2\n"; opendir(DIR1, $p1); my @dirList1 = readdir(DIR1); closedir(DIR1); opendir(DIR2, $p2); my @dirList2 = readdir(DIR2); closedir(DIR2); my %hash1; my %hash2; foreach my $item (@dirList1){ $hash1{$item} = 1; } foreach my $item (@dirList2){ $hash2{$item} = 1; } my $c=0; print "\nList of items that are in $p1 but not in $p2\n"; ####### This header line is added foreach my $key (sort keys %hash1){ if ($hash2{$key}!=1){ print "$key\n"; #####This line was commented in previous code $c++ } } print "Number of items that are in $p1 but not in $p2 - $c\n"; $c=0; print "\nList of items that are in $p2 but not in $p1\n"; ####### This header line is added foreach my $key (sort keys %hash2){ if ($hash1{$key}!=1){ print "$key\n"; #####This line was commented in previous code $c++; } } print "Number of items that are in $p2 but not in $p1 - $c\n"; print "_______________________\n"; foreach my $key (sort keys %hash1){ if (($hash2{$key}==1)&&(isSubDirectory($p1,$key))&&(isSubDirectory($p2,$key))){ compare($p1 . "\\" . $key, $p2 . "\\" . $key); } } } sub isSubDirectory($$){ my ($path, $item)[EMAIL PROTECTED]; #print "$path, $item\n"; my $myItem = $path. "\\" . $item; if ($item =~m/^(\.)+$/){ return 0; } if (-d $myItem){ return 1; }else{ return 0; } } ############################################################################ ###################### LRMK ----- Original Message ----- From: sudhindra k s To: LRMK Cc: [EMAIL PROTECTED] Sent: Thursday, June 24, 2004 11:39 AM Subject: Re: Re: Comparing Directories Hi Thanks. I tried this script. It compares the filenames within the directory very well. But i want to compare even the contents and report the differences between the files. Regards Sudhindra On Tue, 22 Jun 2004 LRMK wrote : > >This must do the <A TITLE="Click for more information about job" STYLE="text-decoration: none; border-bottom: medium solid green;" HREF="http://search.targetwords.com/u.search?x=5977|1||||job|AA1VDw">job</A> but there must be a more nice looking way of doing this > > >Code >___________________________________________________________ > >compare("c:\\program files","d:\\program files"); #Example call > > >sub compare($$){ > my ($p1, $p2) [EMAIL PROTECTED]; > > > print "comparing $p1 with $p2\n"; > > ################################v Loading direcrory 1 > opendir(DIR1, $p1); > my @dirList1 = readdir(DIR1); > closedir(DIR1); > > ################################v Loading direcrory 2 > opendir(DIR2, $p2); > my @dirList2 = readdir(DIR2); > closedir(DIR2); > > my %hash1; > my %hash2; > foreach my $item (@dirList1){ > $hash1{$item} = 1; > } > > foreach my $item (@dirList2){ > $hash2{$item} = 1; > } > > > ################################ Counting the items that are in Path 1 >but not in path 2 > my $c=0; > foreach my $key (sort keys %hash1){ > > if ($hash2{$key}!=1){ > #print "$key\n"; > $c++ > } > > } > print "Number of items that are in $p1 but not in $p2 - $c\n"; > > ################################ Counting the items that are in Path 2 >but not in path 1 > $c=0; > foreach my $key (sort keys %hash2){ > > if ($hash1{$key}!=1){ > #print "$key\n"; > $c++; > } > > } > print "Number of items that are in $p2 but not in $p1 - $c\n"; > >print "_______________________\n"; > > > ####################################################### Comparing Sub >directories > foreach my $key (sort keys %hash1){ > if >(($hash2{$key}==1)&&(isSubDirectory($p1,$key))&&(isSubDirectory($p2,$key))) { > > compare($p1 . "\\" . $key, $p2 . "\\" . $key); > > } > } >} > > > > >#################################### Sub to check whether an item is a valid >sub directory of the given path >sub isSubDirectory($$){ > my ($path, $item)[EMAIL PROTECTED]; > if ($item =~m/^(\.)+$/){ > return 0; > } > my $myItem = $path. "\\" . $item; > if (-d $myItem){ > return 1; > }else{ > return 0; > } > > >} > > > >LRMK >----- Original Message ----- > From: "sudhindra k s" <[EMAIL PROTECTED]> >To: <[EMAIL PROTECTED]> >Sent: Tuesday, June 22, 2004 1:24 PM >Subject: Comparing Directories > > > >Hi > >I have two directories with a path as shown below >c:\test\result\... and d:\test2\result2\... > >The directory stucture and files after these are the same. i.e if there is a >directory xyz within c:\test\result\, there will be a corresponding >directory xyz within d:\test2\result2\ with the file names also being the >same. > >now i want to compare the contents of the directories and output the >difference between the two if any. How can i acheive this? > >Regards >Sudhindra > > > >-- >To unsubscribe, e-mail: [EMAIL PROTECTED] >For additional commands, e-mail: [EMAIL PROTECTED] ><http://learn.perl.org/> <http://learn.perl.org/first-response> > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>