读书人

这个perl程序到底是哪里出了有关问题

发布时间: 2012-02-11 09:51:35 作者: rapoo

请指教,这个perl程序到底是哪里出了问题
#!/usr/bin/perl

sub total{
my ($total) = shift @_;
foreach(@_){
$total += $_;
}
$total;
}

sub above_average{
my $n = @_;
my $total = &total(@_);
my $average = $total/$n;
foreach(@_){
if($_> $average){
my @end = push(@end,$_);
}
}
@end;
}

my @n =&above_average(1..10); #1
print "@n\n ";

my @m =&above_average(100,1..10);#2
print "@m\n ";


第一个子程序是求和,第二个子程序求数组中大于平均值的数。
单执行#1或#2都可以出正确结果,但是两个一起用,#2的结果为(6 7 8 9 10 100),不正确。
是什么问题?请指教

[解决办法]
#!/usr/bin/perl -w
use strict;

sub total{
my ($total) = shift @_;
foreach(@_){
$total += $_;
}
$total;
}

sub above_average{
my $n = @_;
my $total = &total(@_);
my $average = $total/$n;
my @end;
foreach(@_){
if($_> $average){
push(@end,$_);
}
}
@end;
}

my @n =&above_average(1..10);
print "@n\n ";

my @m =&above_average(100,1..10);
print "@m\n ";

读书人网 >perl python

热点推荐