#!/usr/bin/perl
use Digest::MD5;

die "Usage: dupchecker <directory>\n" if ($#ARGV < 0);
my $dir = $ARGV[0];

chdir "$dir" or die "Cannot chdir to $dir: $!";
my @files = glob "*";   # get list of files to md5

my %hashed;
my @found;

foreach $file (@files) {  
   open(FILE, $file) or die "Cannot open file $file: $!";
   while(<FILE>) {
      my $md5 = Digest::MD5->new;
      $md5->addfile(FILE);
      $hashed{$file} = $md5->b64digest;
   }
   close(FILE);
}

my %dup;
while (($k, $v) = each %hashed) {
   if( $dup{$v} == 1 ) {
      push @found, $k;
   } else {
      $dup{$v} = 1;
   }
}

foreach $find (@found) {
   print "Found Duplicates: $find\n";
}
