List::MoreUtilは配列操作の便利な関数をまとめたモジュールでそこに apply というサブルーチンがある。docより使い方は以下の通り。 つまり第一引数にサブルーチン、残りに配列を渡すとその配列に対してサブルーチンを適用してその結果を返してくれる。mapは配列の中身を変えてしまうがapplyは変えない。 my @list = (1 .. 4); my @mult = apply { $_ *= 2 } @list; print "\@list = @list\n"; print "\@mult = @mult\n"; __END__ @list = 1 2 3 4 @mult = 2 4 6 8 applyの実装はこんなかんじ プロトタイプ宣言でサブルーチンと配列(&@)が渡ることを宣言。 @values に配列をコピー shiftでサブルーチンを$actionに、foreac