I have edited the script above as follows (below): it writes out a temporary file that I will use while running my second script. The second script will now take the temporary file which I will delete afterwards.
Please critisize as it must be 100% accurate.
#!/usr/bin/perl
use strict;
use warnings;
my $file = 'my_data_file.txt';
my %seen = ();
{
local @ARGV = ($file);
#remove all previous re-organized files
my $remove = "my.txt.tmp";
if (unlink($remove) == 1) {
print "Existing \"$remove\" file was removed\n
+";
}
while(<>){
#now make a file for the ouput
my $outputfile = "my.txt.tmp";
if (! open(POS, ">>$outputfile") ) {
print "Cannot open file \"$outputfile\" to write to!!\n\n"
+;
exit;
}
$seen{$_}++;
if($seen{$_} !~/-/g){
next if $seen{$_} > 1;
print POS;
}
}
}
print "\n\nfinished processing file.\n";