写一个名为&above_average的子程序,当给定一个包含多个数字的列表时,返回其中大于这些平均值的数。
- sub sum{
- my $sum; #定义私有变量
- foreach(@_){
- $sum += $_;
- }
- $sum; #返回累加和的返回值
- }
- sub average{
- if(@_ == 0) { return} #如果列表为空,不进行计算(最后一条语句可以不写分号,也就是return后面的分号可以省略)
- my $ave;
- my $len = @_;
- $ave = &sum(@_)/$len; #计算平均值并返回
- }
- sub above_average{
- my $average = &average(@_);
- my @list;
- foreach (@_){
- if($average<$_){
- push @list , $_; #如果高于平均值,入list
- }
- }
- @list; #返回list
- }
- my @fred = above_average(1..10);
- print "\@fred is @fred\n";
- print "(shoule be 6 7 8 9 10)\n";
- my @barney = above_average(100,1..10);
- print "\@barney is @barney\n";
- print "(shoule be just 100)\n";
运行结果: