今日のCPANモジュール
use Acme::Bleach;
エイプリルフールということで、CPAN のジョークモジュールをいくつか紹介。
CPAN には Acme:: というジョーク専用の名前空間があります。この名前空間が生まれたのは 2001 年。提唱したのは Perl 界の重鎮 Damian で、彼が Bleach というジョークモジュールを作ったときの話らしいです。
最初は Bleach という名前でアップしたのですが、「ジョークモジュールがいろいろ混ざっていくのはいかがなもんかね。ジョーク系は Acme:: という名前空間に入れるようにしませんか」というような感じで提唱。Bleach も Acme::Bleach として再 UP されました。
Acme は美味しんぼで言う『究極』とか『至高』とかいうニュアンスと、思ってたのですが、ルーニー・テューンズのロードランナーの中に出てくる、コヨーテに怪しい商品を売る Acme 社 から来てるそうです(このへん参照)。 メールで教えてもらいました。すみません。
単純に Joke:: とかじゃないのがセンスあるなあと思います。
Acme::Bleach は、
use Acme::Bleach;
print "Hello.";
みたいに普通に use Acme::Bleach; した後続けて 好きなコードを書いた bleach.pl を作り、実行すると、bleach.pl ファイルそのものが“漂白”され(書き換えられる)、以下のようになります。
use Acme::Bleach;
選択してみるとわかりますが、コードがすべて(バイトにされたのち)タブとスペースと改行で表現されてます。use Acme::Bleach; はデコードとエンコード両方の役割を持っており、このまま perl bleach.pl を実行するとちゃんと Hello. を表示します。 とまあ、こうして Acme:: 名前空間ができたおかげで、世界の Perl ハッカーは心置きなく思いついたジョークモジュールを次々 CPAN に投入できるようになったのでした。めでたしめでたし♪ 日本人にもわかりやすい Acme:: 系をいくつか紹介してみます。Acme::DoubleHelix
Double helix = DNA の 二重らせんです。Acme::Bleach と同じようなモジュールですが、先ほどの Hello. を出力するやつがこうなります。use Acme::DoubleHelix; CG T--A A---T A----T C----G T----A A---T G--C AT CG C--G G---C G----C C----G A----T C---G G--C TA CG C--G A---T A----T # 以下続くこういうのがお好きなら Acme::EyeDrops が気に入ると思います。
Acme::MorningMusume
モーニング娘モジュール。1メンバー1モジュールになってて、年齢とかがわかる便利?モジュール。
Sex
こいつは、Acme:: ができる前に投入されたジョークモジュール(2000年)で、まだその名前空間のまま生き残ってるやつですね。2つのモジュールを Sex させます。実行時にあえぎます(笑)
Acme::Hoge
foo や bar を print しようとしても日本風の hoge とか fuga になってしまう、俺は日本男児だー向け?モジュール。
Acme::Kensiro
ケンシロウ進数 に基づき「あたたたたた」を出力。くだらない・・・(← Acme:: 系への最高のほめことばです)
Acme::Hyde
こちらは、ラルクアンシエルの Hyde の身長を 1 とする新たな単位 hyde の計算用モジュール。。
Acme::Lou
これはぼくの作品です。テキストをルー大柴風に変換します。ルー語変換 で作ったものをモジュール化したものです。結構まじめに組んだ苦心作で、思い出深いモジュールです。
SEE ALSO
その他の Acme:: モジュール, Acme:: 名前空間誕生秘話
WRITTEN BY
冨田 尚樹 <tomita@cpan.org>