I tried to get some of what you need but didn't get the use of
$i, $j, $k or $modified.
This isn't a complete solution, but it uses the suggestion by LanX to create a hash of the smaller B file and loop through the A file just once. This should speed up your program considerably.
I used 2 pseudo files to stand in for your real files. I hope this gives you some direction for your problem.
#!/usr/bin/perl
use strict;
use warnings;
$|=1;
my $fileA =<<EOF;
l100101,aaaaaaa,a_0100,loc,10,1
l100101,aaaaaaa,a_0100,loc,11,1
l100101,aaaaaaa,a_0100,loc,12,6
EOF
my $fileB =<<EOF;
l103709,bbbbbbb,c_0200,929
l100109,bbbbbbb,b_0100,442
l100107,bbbbbbb,c_0300,389
EOF
my $filea = $ARGV[0];
my $fileb = $ARGV[1];
my $FileC = "result.csv";
open ( FA, '<', \$fileA) || die ( "File $filea Not Found!" );
open ( FB, '<', \$fileB) || die ( "File $fileb Not Found!" );
#open ( FC, ">", $FileC) || die ( "File $FileC Not Found!" );
my %B;
while ( <FB> ) {
chomp;
my($look, $sec, $cls, $max) = split ",";
$B{"$look,$sec,$cls"} = $max;
}
my @A;
while ( <FA> ) {
chomp;
my($look, $sec, $cls, $att, $idx, $qtd) = split ",";
my $keyA = "$look,$sec,$cls";
if (exists $B{$keyA}) {
my $max = $B{$keyA};
my $tot = $qtd - 1;
if ($tot >= 0) {
print join(",", $look, $sec, $cls, $att, $idx, $max), "\n
+";
}
}
}
-
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.