2011-11-22 4 views
2

아직 여기 있습니다. ;) 나는 매우 전문적인 사람으로부터이 코드를 얻었고, 나는이 기본적인 질문을 그에게 물어 보았다. 어쨋든 이것은 이제 나의 질문이다; 이 Perl 스크립트는 숫자로 구분 된 공백 열의 중앙값을 인쇄하고, 크기를 얻기 위해 몇 가지 물건을 추가했습니다. 이제는 같은 열의 합계를 얻으려고합니다. 나는 결과를 얻지 못했고 오른쪽 열을 가져 가지 않았습니까? ./stats.pl 1 columns.txt
#!/usr/bin/perl로 사전에aPerl 스크립트에서 평균 계산하기

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

감사합니다. 인덱스가 원하는 컬럼의 수입니다 그런 다음 $result[$index] 개별 열을 액세스 할 수 있습니다

my @result = split(m/\d+/, $line); 
#average 
use List::Util qw(sum); 
my $sum = sum(@result); 

:

당신은 배열로 모든 숫자를 넣을 수 있습니다 : 일부 포인터

+0

줄을 게시 할 수 있을까요? – FailedDev

+0

사면? 내 파일에서 숫자의 줄을 의미합니까? – Dav1

+0

예 한 줄. – FailedDev

답변

0

확인 당신이 가야합니다 액세스. 상기 반면에 인쇄 "디버깅"

넣어 :

$total += $line; 
$count += 1; 

마지막으로 파일을 읽고 있는지 확인하십시오

$total = $line + $total; 
$count = $count + 1; 

과 같이 다시 쓸 수 있습니다 :

또한주의 루프 :

print $line, "\n"; 

이것은 당신을 가야한다 :)

+0

Thnak so much! 나는 그것을 시도 할 것이다. – Dav1

+0

@ Dav1 여러분 환영합니다. Perl은 좋은 도구입니다! :) – FailedDev

+0

위의 스크립트를 제안 사항으로 다시 작성해주십시오. Perl을 처음 사용하고 많은 문법적 구문이 있습니다. – Dav1