2010-11-22 87 views
0
@a1 = qw(1 2 3) 
@a2 = qw(1 2 3 4 5) 

看上去有a1和a2之間的計算結果作爲a2 [0]的值插入。例如1 + 1 = 2進入a2 [0]爲2,那麼下一個計算就是2 + 2(a2 [0] + a1 [1]),得到a2 [0] = 4,然後4 + 3 (a2 [0] + a1 [2]),得到a2 [0] = 7,然後移至a2中的下一行,並對a1執行相同的功能。兩個陣列之間的Perl迴路

當所有說,做的結果將是從print @a2;

+1

因此,你在哪裏面臨執行此問題?你想在這裏解決什麼問題? – 2010-11-22 05:55:01

+1

聽起來像作業 – dietbuddha 2010-11-22 05:57:56

+0

我試過'我$ a2 =地圖{我$ a = $ _;地圖{$ _ + $ a} @ a1} @ a2;'作爲嵌套地圖,但不起作用。 foreach(@ 2){$ _ = $ a1 [0] + $ _; $ _ = $ a1 [1]我已經厭倦了foreach循環,但是我無法打破從@ a1 列出每個項目的邊界。 ] + $ _; $ _ = $ a1 [2] + $ _; }' – 2010-11-22 05:59:34

回答

2

所以基本上你第二陣列中添加的總的值的第一陣列中的每個元件。

my $total = 0; 
($total += $_) for @a1; 
($_ += $total) for @a2; 
+0

完美,如此簡單,我太過於自責了。謝謝,現在已經解決了。 – 2010-11-22 06:47:40

2

利用相關的列表功能:

#!/usr/bin/env perl 

use strict; 
use warnings; 

use List::Util  qw(sum ); 
use List::MoreUtils qw(apply); 

my @a1 = qw(1 2 3 ); 
my @a2 = qw(1 2 3 4 5); 

my $sum = sum(@a1); 

@a2 = apply { $_ += $sum } @a2; 

參見:

另請參閱Fergal's answer,在這種情況下更簡單。