リストを簡単に処理するにはList::Util を使います。 List::Util は5.8から標準装備です。
use strict;
use warnings;
use List::Util qw(first max maxstr min minstr reduce shuffle sum);
List::UtilはメソッドをExportしないから注意だよ。
$v = min 1..9; #1
$v = minstr 'a' .. 'z' #a
$v = max 1..9; #9
$v = maxstr 'a' .. 'z' #z
min/maxは与えられたリストを数字としてminstr/maxstrは文字列として評価します。
$v = shuffle 1..9;
@v = shuffle 1..9;
リストからランダムな値を取り出したり、ランダムに並べ替えます。
$v = sum 1..9; #45
$v = first {$_ > 20} (1, 11, 21 ,31); #21
$v = reduce { $a > $b ? $a : $b} 1..9; #9
reduceはリストの先頭から二つ値($a, $b)を取り、次からは式の返り値を$aとして次の値を $bとして評価していきます。
内部的にはfirstとshuffle以外は全てreduceによって実装されています。
Last modified: $Date: 2008-05-22T09:21:23.154313Z $