#!/usr/bin/perl

$maximum = &max (3, 4, 8, 20, 9, 32, 12, 22);  传标量列表给子程序max

sub max {                                      定义子程序max

  my ( $max_so_far ) = shift @_;               定义私有变量并把maximum中的第一个值赋给它

  foreach (@_) {                               遍历标量列表

    if ( $_ > $max_so_far ) {                  剩下标量列表和max_so_far比较

      $max_so_far = $_;                        把较大的值赋给max_so_far

    }

  }

 $max_so_far;                                  返回max_so_far

}

print $maximum ."\n";                          打印最大值

此程序用到shift(把标量列表中的第一个值取出赋给变量),@_(子程序用的数组名),$_(foreach 遍历时候不定义变量默认存储在$_中)。