# Initial values my @arr = (1,2,3, 4,5,6, 7,8,9); # Replace with a set of array refs to 3-element arrays my $nblk = @arr / 3; my @a2; push @a2, [@arr[$_*3, $_*3+1, $_*3+2]] for (0..$nblk-1); # Sum up each array ref use List::Util qw(sum); my @a3 = map { sum @$_ } @a2;