2009年4月10日
コードブロック引数をオプションにできたら嬉しいんだけど
Perlに標準バンドルの配列操作のモジュールList::Utilにmax関数てのがある。List::Utilは便利なモジュールでPerlベストプラクティスでは積極利用を推奨していて、その辺の事はこの辺でも紹介されている。
で、なんとなくこんな使い方出来ないかなとか思ったけど無理でした。
use List::Util qw/max/;
...
my @lines = <$fh>;
#my $max = max {length} @lines; #こう書けたら超美しいと思うんだけど!
my $max = max map {length} @lines; #こう書くしかないのが残念
つまり、sortみたいにコードブロックを引数で持つ事もできて、渡さないときはデフォルトの動きをする、みたいな感じだったら良かったなぁ。
でも、考えてみると、Pure Perlでそれを実装する方法って無いのか。プロトタイプで&を指定するとコードブロックが省略できなくなっちゃうしな。ちょっと残念な感じ。XS使えば出来たりするのかなぁ。