use List::Util qw( first);

Perl 5.8からList::Utilというのが標準モジュールになった。
ということをPerl Best Practicesを読んでて知った。
忘れないようにメモ。
List::Utilはデフォルトでは何もエクスポートしないのでuseするときに指定する必要があります。
たとえばfirstというのは配列の要素を順番に評価して一番最初にマッチした要素を返します。
perldocからちょっと引用。

$foo = first { defined($_) } @list    # first defined value in @list
$foo = first { $_ > $value } @list    # first value in @list which
                                      # is greater than $value

便利。
Perl Best PracticesのP110に載ってます。
List::Util - perldoc.perl.org

    • -

おまけ。
これはNon-Lexical Loop IteratorsというBest practiceなんだけど同じ章にいい言葉が載ってたのでこれもメモ。というか最初はこれが書きたかったんだ。

Best practice isn't only about coding in a way that doesn't introduce errors. Sometimes it's only about coding in a way that doesn't conceal errors.

きょう不用意にも半無限ループに陥るスクリプトを書いてしまったので自分への戒めとして。