Вычисление среднего значения из скрипта aPerl - PullRequest
2 голосов
/ 23 ноября 2011

Я все еще здесь.;) Я получил этот код от очень опытного парня, и я стесняюсь задавать ему эти основные вопросы ... в любом случае, это мой вопрос сейчас;этот 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";

заранее спасибо.

1 Ответ

0 голосов
/ 23 ноября 2011

ОК, некоторые указатели, чтобы вы начали:

Вы можете поместить все числа в массив:

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";

Это должно помочь вам:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...