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>