|
I have written a code to compare two given directories.
What changes needs to be done to compare the two directory structures recursively?
My code is:
#!/usr/bin/perl
use strict;
my $tar = "/home/sharmagu/perl/A.tar";
my $dir1 = "/home/sharmagu/perl/A";
my $dir2 = "/home/sharmagu/perl/tmp/A";
my $tmpDir = "/home/sharmagu/perl/tmp";
#chdir $tmpDir || die ("Error: Cannot change the directory -- $! \n");
#system "/bin/tcsh -c 'tar -xvf $tar'";
#print "Untaring of file is done\n";
my $result;
my @missing;
my @different;
&getDirContent($dir1,$dir2,0);
sub checkDir {
my $dir = shift;
my $level = shift;
my %dir_hash;
if(-d $dir){
opendir(DIR,$dir) || die ("Error: Cannot open directory $! \n");
foreach (readdir(DIR)) {
undef($dir_hash{$_});
}
closedir(DIR);
}
else{
print "Directory $dir is not readable \n";
}
return(\%dir_hash);
}
sub getDirContent {
my $dir1 = shift;
my $dir2 = shift;
my $level = shift;
my $dir_contents1 = checkDir($dir1,$level);
my $dir_contents2 = checkDir($dir2,$level);
foreach my $file_name ( keys %{$dir_contents1} ) {
next if($file_name =~ /^\.+$/);
my $file = $dir1 . "/index.html" . $file_name;
my $str;
if(-d $file){
print "$file_name is a directory.\n";
$str = "d";
}elsif((-f $file) && (-r $file)){
print "$file_name is a readable file.\n";
$str = "f";
}elsif(-l $file){
print "$file_name is a link.\n";
$str = "l";
}else{
print "Can't determine \n";
}
}
foreach my $file_basename ( keys %{$dir_contents2} ) {
next if($file_basename =~ /^\.+$/);
my $file = $dir2 . "/index.html" . $file_basename;
if(-d $file){
print "$file_basename is a directory. \n";
}elsif((-f $file) && (-r $file)){
print "$file_basename is a readable file. \n";
}else{
print "Can't determine \n";
}
}
my $result = compareDir($dir_contents1, $dir_contents2);
}
sub compareDir {
my $dir_contents1 = shift;
my $dir_contents2 = shift;
foreach my $key1 (keys %{$dir_contents1}) {
if (exists $dir_contents2->{$key1}) {
}
else {
push(@missing, $key1);
}
}
if (scalar(@missing)) {
# Printing the missing array
print "The missing array is: @missing\n";
}else {
print "Array doesnot exists\n";
}
}
please suggest me something
|
|
|
|
|
|
|
// |