如何将每个数组的元素相加?
@a1 = (1..5);
@a2 = (1..3);
@a3 = (1..4);
@tar = ("@a1", "@a2", "@a3");
foreach $each(@tar){
@ar = split(' ',$each);
foreach $eac(@ar){
$tot+=$eac;
}
print "$each total is: $tot\n";
}
在这段代码中给出了输出,但后续的总值与前面的总值相加。但我期望的输出是:
1 2 3 4 5 total is: 15
1 2 3 total is: 6
1 2 3 4 total is: 10
最佳答案
问题是因为您在每个 foreach 循环中使用相同的变量 $tot 。所以它保留了旧的值(value)。简单的修复方法是将 $tot 定义为每个循环的第一个词法变量。
#!/usr/bin/perl
@a1 = (1..5);
@a2 = (1..3);
@a3 = (1..4);
@tar = ("@a1", "@a2", "@a3");
foreach $each(@tar){
my $tot;
@ar = split(' ',$each);
foreach $eac(@ar){
$tot+=$eac;
}
print "$each total is: $tot\n";
}
输出为
1 2 3 4 5 total is: 15
1 2 3 total is: 6
1 2 3 4 total is: 10
关于perl - perl中如何将每个数组的值相加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25258041/