use PerlIO::via::MD5; my %digested; for (glob '/path/to/*.csv') { open my $fh, '<:via(MD5)', $_ or warn $! and next; my $sum = <$fh>; exists $digested{$sum} and unlink($_), next; $digested{$sum} = $_; }