perlquestion
gowthamvels
<p>Hi Monks,</p>
<p>This post is regardig how do i use the if condtion statement within perl module. below is the data, the code attached is given by one of the monk, he helped me out.</p>
<p>I want to use a if conndtion like below if thee col6 is starting with 97517, it should pick in if condtion. in elsif condition it should pick 97516 containing records</p>
<c>
if ($col6 =~ /^\Q97517\E/ }
elsif
$col6 =~ /^\Q97516\E/))
</c>
<p>Input csv </p>
<c>
col1,col2,col3,col4,col5,col6,col7,col8
1234,GP,20170715,0,V,97517,24,0.6
5678,Pack,20170715,0,V,97516,88,1.8
1234,GP,20170715,0,V,97517,22,0.6
5678,Pack,20170715,0,V,97517,183,3.9
1234,PRS,20170715,0,S,97517,261,5.4
5678,PRS,20170715,0,M,97517,36,0.9
</c>
<p>code</p>
<code>
#!/usr/bin/env perl
use strict;
use warnings;
use Data::Table;
# Load input data from csv file
my $dt = Data::Table::fromCSV('data.csv');
# Make a new table that only contains the relevant columns
my $st = $dt->subTable(undef, [ 'col2', 'col7', 'col8' ]);
# Group by 'col2', calculate sums for 'col7' and 'col8'
my $ot = $st->group(
['col2'], # column to group by
['col7', 'col8'], # Columns to perform calculation on
[ \&sum, \&sum ], # Apply sum function to 'col7' and 'col8'
['sum_of_col7', 'sum_of_col8'] # Put the sums in these columns
);
print $ot->csv, "\n";
sub sum {
my @data = @_;
my $sum = 0;
foreach my $x (@data) {
next unless $x;
$sum += $x;
}
return $sum;
}
</code>
<p><small><i>2017-08-16 [Athanasius] added code tags</i></small></p>