minっぽい関数の拡張系

  • 入力としてundefあるいは値を複数受け取り
  • 結果として値の最小値(あるいは値が全てundefの場合はundef)を返す

という処理をどう書くのがいいか? 自分が思いつくのは以下のコードだけど、もっといい書き方あるかなぁ(簡潔明快であることが望ましい)。

my $min_or_undef = List::Util::min(
    defined($a) ? ($a) : (),
    defined($b) ? ($b) : (),
);

20:03追記: IRCという名の集合値によって、

my $min_or_undef = List::Util::min(grep { defined $_ } ($a, $b));

のがわかりやすいだろうということになった。kan++ tokuhirom++