open my $in, '<', $infile or die "Couldn't open '$infile': $!"; open my $out, '>', $outfile or die "Couldn't create '$outfile': $!"; my %seen; while (<$in>) { my $key = $in; # change this to whatever key generation you need if (! $seen{ $key }++) { print $out $in; }; };