我有具有多列的制表符分隔数据。计算Perl中每列值w.r.t中的每个值的总和
我在第31列有OS名称,第6和第7列有数据字节。我想要做的是计算每个独特操作系统的总体积。
所以,我做在Perl是这样的:
#!/usr/bin/perl
use warnings;
my @hhfilelist = glob "*.txt";
my %count =();
for my $f (@hhfilelist) {
open F, $f || die "Cannot open $f: $!";
while (<F>) {
chomp;
my @line = split /\t/;
# counting volumes in col 6 and 7 for 31
$count{$line[30]} = $line[5] + $line[6];
}
close (F);
}
my $w = 0;
foreach $w (sort keys %count) {
print "$w\t$count{$w}\n";
}
因此,其结果会是这样
Windows 100000
Linux 5000
Mac OSX 15000
Android 2000
但似乎在这个代码中的一些错误,因为所产生的值我得到的不是预期的。
我在做什么错?
我会考虑起来 - 投票你的问题(风格,而不是错误本身),如果你真的提供样本输入导致问题,实际产出和预期产出 – DVK 2011-02-17 23:26:41