Search code examples
perlarrays

How can I perform mathematical operations on an array of arrays?


I have an array of array like below with all numeric values. I want to perform some mathematical operations with these values.

  1. Add and print the values of each array elements. e.g.

    sum $VAR1 = sum1 sum $VAR2 = sum2

  2. Add all the values from each variables. e.g.

    sum $VAR1 + $VAR2 +...+ $VARn = totalsum

  3. 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;

Solution

  • 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].)