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.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|