use strict; use warnings; open my $IN, '<', $ARGV[0] or die("Can't read $ARGV[0]: $!"); open my $OUT, '<', $ARGV[1] or die("Can't write $ARGV[1]: $!"); my %seen; while (<$IN>) { next if $seen{$_}++; # check/mark line as seen print $OUT $_; } close $IN; close $OUT;