http://qs321.pair.com?node_id=289750

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

I wrote a script that checks fields (delimiter is a pipe) where if the last entry has the same last four field entries it will eliminate that last line with the duplicates. The script works but as usual I like to get it to look better and this site always provides a great way to critique and help me write a more efficient script. Please look at the script and advise how I can make it better.
Thanks!

Script:
use strict; my $db = 'C:\Inetpub\wwwroot\cgi-bin\test4.txt'; open(DATA, "$db") || die "Can not open: $!\n"; my @dat = (<DATA>); close(DATA); open(DATA, "$db") || die "NO GO: $!\n"; my @files; foreach (@dat) { my $key = join(" ", (split /\|/, $_)[1,2,3,4]); #print "$key\n"; push(@files,$key); } #print "@files\n"; foreach (@files) { chomp; $key{$_}++; } foreach (keys %key) { if($key{$_} > 1) { #print "$_ \n"; my $db = 'test4.txt'; open(DATA, "$db") || die "Can not open: $!\n"; my @lines = (<DATA>); pop @lines; open(FOUT,"> test4.txt") or die $!; print FOUT @lines; close FOUT; } } close(DATA);
data in test4.txt:
34|4|45|56|45 45|34|45|00|23 45|34|45|00|27 34|4|456|56|03 36|4|456|56|03 #This line will be eliminated after the script is run +because last four fields are the same as the previous line.