2014-01-23 146 views
0

我有一個MyArray whoes內容是「200 500 800 100」in perl。我需要函數返回我第一次200,第二次迭代它應該返回200 + 500,下一次它應該返回我200 + 500 + 800,直到它已經sumup所有元素。返回數組元素的總和perl

foreach my $i (0 .. $#MyArray) 
    { 
     @MyArray = (1..$i);  
     $sum += $_ for @MyArray; 
    } 

我試圖做一些事情如上面提到的,但它不返回任何$總和

+1

請參閱[List :: Util :: sum](http://perldoc.perl.org/List/Util.html)。 – squiguy

+0

「回報我200 + 500」是什麼意思?你想讓程序實際返回一個正在運行的總數,還是隻關心數組中最後一個數字的總和? – Kenosis

回答

0
my $array = [200, 500, 800, 100]; 
my @sum_array; 
my $iter_sum = 0; 
for my $each (@$array) { 
    $iter_sum += $each; 
    push @sum_array, $iter_sum; 
} 
return \@sum_array; 

你可以得到的總和在@sum_array

1

如何:

use List::Util qw/sum/; 
my @arr = (200, 500, 800, 100); 
say sum(@arr[0..$_]) for (0..$#arr); 

輸出:

200 
700 
1500 
1600 

關於List::Util的文檔。