##
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;
####
while (<$IN>) { $seen{$_}++ || print $OUT $_ }