phpのmax関数を見ていて、perlで実現したらどうなるだろうと考えてみました。そして実装してみた結果がこれです。
@ns = qw(1 23 4 24 1330 540); $a = shift(@ns); $n = $#ns; for($i = 0;$i <= $n;$i++){ if($a == $ns[0] or $a > $ns[0]){ shift(@ns); }else{ $a = shift(@ns); } }
これをサブルーチンにすると、
sub max{ my @ns = @_; my $n = $#ns; my $a = shift(@ns); for(my $i = 0;$i <= $n;$i++){ if($a == $ns[0] or $a > $ns[0]){ shift(@ns); }else{ $a = shift(@ns); } } return $a; }
となります。
@nsをsortして取り出せば一発ではと言うのは無しにして下さい