2

我需要一种方法来获取 .csv 文件中一行中的数字并将它们相乘,然后将每一行的乘积相加得到一个数字。我的 .csv 文件看起来像:

1,1
2,3
3,4

我知道答案应该是 19,但我不确定如何在 Perl 中准确地对其进行编程。我通过以下方式将两个数字分成不同的变量:

($x,$y) = 拆分 (/,/, $line)

我已经读过文件和所有这些,我只需要我的代码的这一部分的帮助。如果有人能指出我正确的方向,我将不胜感激。

4

3 回答 3

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";
于 2013-07-12T21:12:17.803 回答
2

简而言之

perl -F, -anE'$s+=$F[0]*$F[1]}{say$s'
于 2013-07-12T21:14:06.177 回答
1
my $sum = 0;

open my $csv, '<', $filename or die $!;

while(my $line = <$csv>) {
    my $prod = 1;
    $prod *= $_ for split ',', $line;
    $sum += $prod;
}
于 2013-07-12T21:11:09.597 回答