遅延評価?

Perlでの遅延評価の仕組みと使い道がようやく分かってきたような気がしたが、すぐに過ぎ去った。

sub foo {
my $proc= shift;
&$proc;
}

foo 0?sub{print "foo\n";}:sub{print "bar\n";}

sub{}に括られたコードはあくまで宣言だから、この例で言えば&$procまで実行されませんよ、ということかなーと思ったりした。


でも、次のようなコードでもhogeしか評価されてないみたいなんですよな。

sub huga {
warn "huga";
}

sub hoge {
warn "hoge";
}

0?huga:hoge;

つまり、perl三項演算子では遅延評価させることに意味がないということか。みゅううう。
# Cでも同じ動作だった。つまり、裏を返せば三項演算子はif文と同じに使えるということだな。


配列見るとすぐにforeachを使ってしまうのは悪い癖だ。find、mapみたいなかっちょいい関数とか活用しないとー。