I have written this script because I am maintaining a little set of Perl libraries and tools at work, and I'm modifying the installed files on my PC. To avoid erasing it with old versions from CVS, I have the CVS repository elsewhere, and this little script is giving me which file is different from the repository in my current installation
I know the code is not error proof, but it does the work, and it's all I need
use strict;
use File::Path;
use File::Find;
my $repodir='D:\Documents\Works\Perl\Perl tools\repository\amaPerl';
my $instdir='D:\AmaPerl';
my %options;
$options{'wanted'}=\&compare_files;
$options{'no_chdir'}=1;
find(\%options, ($repodir));
exit(0);
sub compare_files
{
return if($_ eq '.' || $_ eq '..' || $File::Find::dir =~ /CVS/);
if(-f $File::Find::name) {
my $file=substr($File::Find::name,length($repodir)+1);
my $other_file=$instdir."\\".$file;
if(! -f $other_file) {
print "$file not found installed...\n";
} else {
system("diff -q \"$File::Find::name\" \"$other_file\" > NU
+L");
if($?) {
print "$file is different\n";
}
}
}
}