Perl-users.jp

リスト処理

リストを簡単に処理するには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

reduce

$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 $