如何将每行csv文件中的数字相乘并加在一起

时间:2013-07-12 21:06:28

标签: perl

我需要一种方法在我的.csv文件中将数字放在一行中并将它们相乘,然后将每行中的产品添加到一起以获得一个数字。我的.csv文件类似于:

  

1,1
     2,3
     3,4

我知道答案应该是19,但我不确定如何在Perl中编程。我将这两个数字分成不同的变量:

  

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

我已经阅读了该文件以及所有这些,我只需要帮助我的代码的这一部分。 如果有人能指出我正确的方向,我会非常感激。

3 个答案:

答案 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;
}