This must do the job 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>