2

.csv ファイルの 1 行の数値を取得して乗算し、各行の積を合計して 1 つの数値を取得する方法が必要です。私の .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 に答える