配列内の最大値を取得する - Perl

とあるリスト(配列)から最大値を取得するにはどうすれば良いだろうか? いろいろな方法が考えられるが、ここでは三種類ほどサンプルをしめす。各関数の処理をそれぞれ見ていただきたい。

サンプル

;#
;#最大値を抽出する
;#

use strict;
use List::Util qw(max);

#-----------------------------#
#         初期値の設定        #
#-----------------------------#
my @array = (3,4,6,8,1,2,5,7);    #8が最大値

#-----------------------------#
#       最大値の取り出し      #
#-----------------------------#
print max1( @array ), "\n";
print max2( @array ), "\n";
print max3( @array ), "\n";



#------------------------------------------------
#■最大値を抽出する (その1)
#------------------------------------------------
sub max1 {
    my $max = shift;    #最初の値を入れる

    #-- 渡された配列をすべてなめる --#
    foreach(@_){
        $max = $_ if( $max < $_ );    #現在よりも大きい値なら
                                      #入れ替える
    }

    return( $max );
}


#------------------------------------------------
#■最大値を抽出する (その2)
#------------------------------------------------
sub max2 {
    #-- 降順にソートし、一番最初の値を取り出す --#
    return(
        (sort {$b <=> $a} @_)[0]
    );
}


#------------------------------------------------
#■最大値を抽出する (その3)
#------------------------------------------------
sub max3 {
    #-- モジュールを利用(Perl5.8以降) --#
    return(
        List::Util::max(@_)
    );
}