Работающий пример из File :: Find :: Duplicates (слегка адаптированный), вероятно, является хорошим началом:
use File::Find::Duplicates;
my @dupes = find_duplicate_files('/tmp/dup');
foreach my $dupeset (@dupes) {
printf "Files %s (of size %d) hash to %s\n",
join(", ", @{$dupeset->files}), $dupeset->size, $dupeset->md5;
}
File :: Find :: Duplicates соответствует по размеру и контрольной сумме MD5, что, вероятно, то, что вы хотите.