写一个名为&above_average的子程序,当给定一个包含多个数字的列表时,返回其中大于这些平均值的数。

 
  
  1. sub sum{ 
  2.         my $sum;                                #定义私有变量 
  3.         foreach(@_){ 
  4.                 $sum += $_; 
  5.         } 
  6. $sum;                                           #返回累加和的返回值 
  7.  
  8.  
  9. sub average{ 
  10.         if(@_ == 0) {return}                    #如果列表为空,不进行计算(最后一条语句可以不写分号,也就是return后面的分号可以省略) 
  11.         my $ave; 
  12.         my $len = @_; 
  13.         $ave = &sum(@_)/$len;                   #计算平均值并返回 
  14.  
  15.  
  16.  
  17. sub above_average{ 
  18.         my $average = &average(@_); 
  19.         my @list; 
  20.  
  21.         foreach (@_){ 
  22.                 if($average<$_){ 
  23.                 push @list ,  $_;               #如果高于平均值,入list 
  24.                 } 
  25.         } 
  26. @list;                                          #返回list 
  27.  
  28.  
  29. my @fred = above_average(1..10); 
  30. print "\@fred is @fred\n"
  31. print "(shoule be 6 7 8 9 10)\n"
  32.  
  33. my @barney = above_average(100,1..10); 
  34. print "\@barney is @barney\n"
  35. print "(shoule be just 100)\n"

运行结果: