タグ

2011年5月26日のブックマーク (1件)

  • なぜ Perl で配列に対して defined を使ってはいけないのか?

    defined の挙動で相談されたのでソースコードを見てみたら、配列に対して defined を呼んでいた。 最近の Perl では配列に対して defined を使うのは非推奨である(perldata や perlfunc 参照)。 ほとんどの人が望むような判定結果は返ってこない*1。 perl -e '@a = (); print defined @a ? 1 : 0; push @a, 1; print defined @a ? 1 : 0; shift @a; print defined @a ? 1 : 0' 配列が空かどうかならスカラーコンテキストで評価するだけで OK なのだが、Perl プログラミング経験上、1度は defined を使用してしまうだろう。 ただ通常は警告が出るのですぐ気がつく。 この警告は Perl 5.6.0 以降で出る。 #!/usr/bin/perl

    satakesatake
    satakesatake 2011/05/26
    definedは非推奨だったのか。。。配列に対しては明示的にscalar(@array)みたいな感じでやるのがすき。