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

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

サンプル

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

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

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

#-----------------------------#
#       最大値の取り出し      #
#-----------------------------#
print min1( @array ), "\n";
print min2( @array ), "\n";
print min3( @array ), "\n";




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

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

    return( $min );
}


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


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