use strict; my $prev; my $dup=0; my ($ifile, $ufile, $dupfile) = qw(data uniq dups); open(IN, $ifile) or die "Cannot open $ifile: $!\n"; open(UNQ,">", $ufile) or die "Cannot open $ufile: $!\n"; open(DUP, ">", $dupfile) or die "Cannot open $dupfile: $!\n"; while () { if (defined($prev)) { if ($prev eq $_) { $dup = 1; print DUP $prev; } else { if ($dup) { print DUP $prev; $dup = 0; } else { print UNQ $prev; } } } $prev = $_; } if (defined($prev)) { if ($dup) { print DUP $prev; $dup = 0; } else { print UNQ $prev; } }