Reputation: 7259
I have an array of array like below with all numeric values. I want to perform some mathematical operations with these values.
Add and print the values of each array elements. e.g.
sum $VAR1 = sum1 sum $VAR2 = sum2
Add all the values from each variables. e.g.
sum $VAR1 + $VAR2 +...+ $VARn = totalsum
Finding percentage of each variable's total (sum1
, sum2
, etc.) with the totalsum.
$VAR1 = [ '17071', '16120', '16292', 'upto n numbers' ]; $VAR2 = [ '1306', '1399', '1420', 'upto n numbers' ]; . . . $VARn = [ '1835', '1946', 'upto n numbers' ];
I have tried the below code to perform addition of the first array reference, but it’s not giving me the correct values.
my $total = 0;
($total+=$_) for $input[0];
print $total;
Upvotes: 1
Views: 1226
Reputation: 5072
Dave's answer already covers the simple cases. If you want to do large-scale processing with matrixy data, consider using the PDL module. (Specifically, start with PDFL::Intro. Thanks for that, Brad.)
Upvotes: 3
Reputation: 3816
I'd do it this way:
use List::Util qw(sum)
my @sums = map { sum(@{$_}) } @array;
my $sum_of_sums = sum(@sums);
my @percentages = map { $_ / $sum_of_sums } @sums;
(In your code, you needed to dereference the arrayref at $input[0].)
Upvotes: 6