我还在这里。 ;)
我从一个非常专业的人那里得到了这个代码,我很害羞地问他这个基本问题......无论如何这是我现在的问题;这个Perl脚本打印一列数字分隔空格的中位数,并且,我添加了一些东西来获得它的大小,现在我正在尝试获得相同列的总和。我做了,但没有结果,我没有采取正确的专栏? ./stats.pl 1 columns.txt
#!的/ usr / bin中/ perl的
use strict;
use warnings;
my $index = shift;
my $filename = shift;
my $columns = [];
open (my $fh, "<", $filename) or die "Unable to open $filename for reading\n";
for my $row (<$fh>) {
my @vals = split/\s+/, $row;
push @{$columns->[$_]}, $vals[$_] for 0 .. $#vals;
}
close $fh;
my @column = sort {$a <=> $b} @{$columns->[$index]};
my $offset = int($#column / 2);
my $length = 2 - @column % 2;
my @medians = splice(@column, $offset, $length);
my $median;
$median += $_ for @medians;
$median /= @medians;
print "MEDIAN = $median\n";
################################################
my @elements = @{$columns->[$index]};
my $size = @elements;
print "SIZE = $size\n";
exit 0;
#################################################
my $sum = @{$columns->[$index]};
for (my $size=0; $size < $sum; $size++) {
my $mean = $sum/$size;
};
print "$mean\n";
提前感谢。
答案 0 :(得分:0)
确定一些指示让你前进:
您可以将所有数字放入数组中:
my @result = split(m/\d+/, $line);
#average
use List::Util qw(sum);
my $sum = sum(@result);
然后,您可以使用$result[$index]
访问各个列,其中index是您要访问的列数。
另请注意:
$total = $line + $total;
$count = $count + 1;
可以改写为:
$total += $line;
$count += 1;
最后确保您正在阅读文件:
将“调试”打印放入while循环:
print $line, "\n";
这应该让你去:)