Assuming you can match the records using the number in col 3 then read the values from the previous month into a hash
open PREV,'<','prev.txt' or die "$!";
my %prev_days=();
#BIGCO-C CMO 180304 L 6/30/13 2
while (<PREV>){
chomp;
my @f = split /\s+/,$_;
$prev_days{$f[2]} = $f[5];
}
and then add them into your
$amt calc
while (<$file>) {
my @f = split '\s+', $_;
$cnt++;
# fill empty dates with month end
my @ymd1 = split ',',$f[4] //= $prev_mth_end;
my @ymd2 = split ',',$f[5] //= $prev_mth_end;
my $diff = Delta_Days(@ymd1, @ymd2);
my $prev = $prev_days{$f[2]} //= 0;
my $amt = ($diff + $prev > 3) ? $diff + $prev - 3 : 0;
my $cost = ($amt * 100);
my $pfmt = "%-14s %-5s %-8s %-3s %-12s %-12s %-6s %-6s %-6s %-6s\n";
printf OUT $pfmt, @f[0..3], fmt_mdy($f[4]), fmt_mdy($f[5]), $diff, $
+amt, fmt_curr($cost), $prev;
}
poj
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.