#! /usr/bin/perl -w use strict; use warnings; use Digest::SHA1; sub get_filedigest { my ($filename) = @_; open(FILE, $filename); my $ctx = Digest::SHA1->new; $ctx->addfile(*FILE); my $digest = $ctx->hexdigest; close(FILE); return $digest; } sub get_filesize { my ($filename) = @_; my @s = stat($filename); return $s[7]; } my $dir = opendir DIR,'.'; my %digest_table; foreach my $f (readdir(DIR)) { if ($f =~ /^(\.|\.\.)$/) { next; } my $d = get_filedigest($f); if (exists $digest_table{$d}) { unlink $f; } $digest_table{$d} = $f; }