■2004-12-26
* [今月のAcme] Acme::Don'tとAcme::ComeFrom(本年最後のAcme)
本当はInline::Perl→Acme::Inline::Perlの流れでいきたかったのですが、例によって他所で紹介されてしまっているので、やめまして。本年最後は二つ取り上げましょう。最初はAcme::Don't。
use Acme::Don't; don't { print "This won't be printed\n" };
Perl組み込みのdoの反対に、なにもしません。これは'
が::
の読替になることを利用しています(昔のコードでよく見られる
jcode'convert みたいな)。
Acme::Don'tの応用でAcme::X'mas::IsWrong。ってのもできますね。 →参考:NOVAのクリスマスCM、表記を変更。中学のときにX'masという表記は間違いだと知って、周囲にその旨説明したのですが、当時はいっこうに信用してもらえなかったですよ。良い時代になったものです(?)
で、もう一つは行く年来る年に相応しくAcme::ComeFrom。Inline::Perlの作者と同じ方です。Perlに限らずよく知られたgoto
の反対でcomefrom。comefrom LABEL
とすると、LABEL行の文を実行する前にcomefromにジャンプします。comefrom 式
はスコープ内で動的にラベルが決定されて、対応するラベルからジャンプしてきます。最後にcomefrom &サブルーチン名
は、対応するサブルーチン名を実行した後、ジャンプしてきます。
面白いことに、同一のcomefrom LABEL
やcomefrom &サブルーチン名
などが複数存在していると、forkすることで全て枝分かれに実行されていきます。INTERCALというのからインスピレーションを受けているらしいです→INTERCAL 情報。
やあ、これで今年のAcme紹介(100%自己満足)はおしまい。