我需要一种方法在我的.csv文件中将数字放在一行中并将它们相乘,然后将每行中的产品添加到一起以获得一个数字。我的.csv文件类似于:
1,1
2,3
3,4
我知道答案应该是19,但我不确定如何在Perl中编程。我将这两个数字分成不同的变量:
($ x,$ y)=拆分(/,/,$ line)
我已经阅读了该文件以及所有这些,我只需要帮助我的代码的这一部分。 如果有人能指出我正确的方向,我会非常感激。
答案 0 :(得分:2)
天真的解决方案可能如下所示:
use strict;
use warnings FATAL => 'all';
my $total;
open(my $fh, '<', "temp.csv");
while( my $line = <$fh> ) {
my ($x, $y) = split(',', $line);
$total += ($x * $y);
}
print "Total is: $total\n";
答案 1 :(得分:2)
简短形式
perl -F, -anE'$s+=$F[0]*$F[1]}{say$s'
答案 2 :(得分:1)
my $sum = 0;
open my $csv, '<', $filename or die $!;
while(my $line = <$csv>) {
my $prod = 1;
$prod *= $_ for split ',', $line;
$sum += $prod;
}