perl 如何使用while循环和拆分来总结逗号和换行符分隔的CSV文件中的数据?

cvxl0en2  于 2023-10-24  发布在  Perl
关注(0)|答案(2)|浏览(170)

Perl脚本必须加载一个CSV数据文件,并对文件中的所有数字求和。文件中只有逗号和换行符分隔的数字。我已经完成了大部分代码,但我没有得到正确的总数。我可能忽略了一些东西,或者对一两个概念有根本的误解,任何帮助都将不胜感激。
示例CSV数据全部汇总:

2, 6, 7, 10, 12
15, 22, 13
11, 4
1

总数应该是103。
我必须使用while(<>)split来读取数据,并且代码必须处于新手可以生成的级别,因此请不要使用高级代码,除非绝对必要。
下面是我的代码:

use strict;
use warnings;

while (<>) {
        chomp;
        my $total = 0;
        my @array1 = split(',');
        foreach my $i (@array1){
        $total +=  $i;

        }
print $total;
}

$total变量最终包含数组中每一行的和作为一个数字,我正在努力弄清楚我如何重写它,使它做我想做的事情。任何帮助都非常感谢。此外,如果提供的代码可以针对一个newb(类似于我提供的),那就太好了。

1tu0hz3e

1tu0hz3e1#

将总数的初始化移动到循环之前,并将打印移动到循环之后:

use strict;
use warnings;

my $total = 0;
while (<DATA>) {
    chomp;
    my @array1 = split(',');
    foreach my $i (@array1) {
        $total +=  $i;
    }
}
print $total;
print "\n";

__DATA__
2, 6, 7, 10, 12
15, 22, 13
11, 4
1

代码会在每行输入后重置总计。

4uqofj5v

4uqofj5v2#

就像这样:

use strict;
use warnings;

my $total = 0;

while (<>) {
    chomp;
    my @array1 = split(',');
    foreach my $i (@array1){
        $total += $i ;

    }
}
print $total;

检查我如何将变量声明放在别处和$total

相关问题