首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

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

2012-02-11 
请指教,这个perl程序到底是哪里出了问题#!/usr/bin/perlsubtotal{my($total)shift@_foreach(@_){$total+

请指教,这个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 ";

热点排行