use strict; open( CDR, $CDR ) || die "Can't read $CDR\n"; open( DUP, ">$CDR.dup" ) || die "Can't write $CDR.dup\n"; open( UNQ, ">$CDR.unq" ) || die "Can't write $CDR.unq\n"; my %seen; while () { if ( exists( $seen{$_} )) { print DUP; } else { $seen{$_}++; print UNQ; } }