perl - perl中如何将每个数组的值相加?

标签 perl

如何将每个数组的元素相加?

@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/

相关文章:

mysql - 如何让 SELECT 输出转义的 "\0"字符

perl - 为什么在运行 Perl 脚本时会得到 'use: command not found'?

python - 如何使用终端逐行比较2个文件

perl - 我是否需要使用一个类来在 Perl 的子类中使用它的方法?

regex - 读取文件并修改它

PERL 如何跳过 while 循环中的错误

regex - Grep Perl 正则表达式和捕获组

perl - 帮助从许多小文本文件中解析出数值

windows - 如何使用批处理文件在 Windows 下为 Perl 程序创建快捷方式?

c++ - SWIG、CPP 和 Perl