两个数组之间的Perl循环

时间:2010-11-22 05:46:47

标签: perl loops

@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执行相同的功能。

完成所有说完后,结果将来自print @a2;

7 8 9 10 11

2 个答案:

答案 0 :(得分:2)

所以基本上你将第一个数组中的值的总和添加到第二个数组中的每个元素。

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

答案 1 :(得分: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,在这种情况下更简单。