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>