codetoad.com
  ASP Shopping CartForum & BBS
  - all for $20 from CodeToad Plus!
  
  Home || ASP | ASP.Net | C++/C# | DHTML | HTML | Java | Javascript | Perl | VB | XML || CodeToad Plus! || Forums || RAM 
Search Site:
Search Forums:
  how can i compare given two directories recursively  gunjan29484 at 08:19 on Friday, December 21, 2007
 

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








CodeToad Experts

Can't find the answer?
Our Site experts are answering questions for free in the CodeToad forums
//








Recent Forum Threads
•  Re: Unlink
•  Prototype VC++ code for searching files and folders on windows??
•  how can i compare given two directories recursively
•  Re: Memory Leaks
•  losing formatting always.
•  execution problem from newbie
•  Deleteing files from Directory on unix
•  YV12 viewer
•  alert() statement lets code work, remove it, code errors out


Recent Articles
ASP GetTempName
Decode and Encode UTF-8
ASP GetFile
ASP FolderExists
ASP FileExists
ASP OpenTextFile
ASP FilesystemObject
ASP CreateFolder
ASP CreateTextFile
Javascript Get Selected Text


© Copyright codetoad.com 2001-2007