2010-11-22 72 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,在这种情况下更简单。