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