Step 1: get all your stock data into a hash as suggested by poj
use strict;
use Data::Dumper;
my %stock;
while (<DATA>) {
my ($qty,$model,$size) = split(',',$_);
$stock{$model} = [0,0,0,0] unless (exists $stock{$model});
$stock{$model}[0] = $qty if ($size =~ /sm/i);
$stock{$model}[1] = $qty if ($size =~ /md/i);
$stock{$model}[2] = $qty if ($size =~ /lg/i);
$stock{$model}[3] = $qty if ($size =~ /xl/i);
}
print Dumper(\%stock);
__DATA__
224,128,MD,B,840197082997
0,128,LG,B,840197083000
0,128,XL,B,840197083017
0,12,SM,B,840197082997
15,12,LG,B,840197083000
0,12,XL,B,840197083017
32,8,SM,B,840197082997
Step 2: Update file2 data
use strict;
## simulate stock data from above script
my %stock;
$stock{'128'} = [0,224,0,0];
$stock{'12'} = [0,0,15,0];
$stock{'8'} = [32,0,0,0];
while (<DATA>) { ## file2
my @data = split(',',$_);
if (exists $stock{$data[0]}) {
my $ary_ref = $stock{$data[0]};
my ($sm,$md,$lg,$xl) = @$ary_ref;
$data[9] = $sm unless ($sm);
$data[12] = $md unless ($md);
$data[15] = $lg unless ($lg);
$data[18] = $xl unless ($xl);
}
print "@data\n";
}
# I've assumed you want the 'price' element (??) left alone unless 'qt
+y' is zero
# in which case set it to zero.
__DATA__
128,1,Download,0,,TEXT,2,Size,2,??,SM,3,??,MD,4,??,LG,5,??,XL
12,1,Download,0,,TEXT,2,Size,2,??,SM,3,??,MD,4,??,LG,5,??,XL
8,1,Download,0,,TEXT,2,Size,2,??,SM,3,??,MD,4,??,LG,5,??,XL
-
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.