Acme::Code::Police vs Acme::Code::FreedomFighter

2010-12-05

こんにちはこんにちは!
「x日目」と変換しようとすると「xに痴目」とか出てきてたいへんAcmeな感じのmyfinderです。
今回はmakamakaさんのAcme大全を読んでて面白かった Acme::Code::Police と Acme::Code::FreedomFighter というモジュールについて紹介します。

インストールする

どちらもCPANにあがっているので、cpanmで一発です。

$ cpanm Acme::Code::Police
$ cpanm Acme::Code::FreedomFighter

どういうモジュールなのか

Acme::Code::Police

Acme::Code::Police は、useしたモジュールが use strict していない場合そのファイルを unlink するというモジュールです。恐ろしいですね。

$ vim acme.pl 
use Acme::Code::Police;
print "no Acme, no Life.\n";
$ ls
acme.pl
$ perl acme.pl 
no Acme, no Life.
$ ls
  # ファイルが消えてる!

こんな感じに、Acmeを叫ぼうとするとポリスが飛んできて逮捕(unlink)されてしまいます。このままでは自由にAcmeを叫ぶ事もできません。

Acme::Code::FreedomFighter

そんな恐ろしいモジュールに敢然と立ち向かう戦士が Acme::Code::FreedomFighter です。
どんなモジュールかはソースを見ればわかると思います。

このモジュールをuseすると、 Acme::Code::Police がファイルを unlink しようとしたときに現れ、逆に Acme::Code::Police を unlink しようとします。

$ vim acme.pl
use Acme::Code::Police;
use Acme::Code::FreedomFighter;
print "no Acme, no Life.\n";
$ ls
acme.pl
$ perl acme.pl
no Acme, no Life.
$ ls
acme.pl # ファイルが残ってる

ありがとうゲバラ、これでポリスに取り締まられる事もなく自由にAcmeを叫ぶ事ができるようになりました。

まとめ

ふつうに use strict すれば何文字もタイプしたり、ファイルが消える恐怖におびえる事もないので、ちゃんと use strict しましょうね、というお話でした。
明日は kan さんの Acme::PrettyCure です、おたのしみに!