CPANにAcmeという名前空間があることを知りました。
ACMEには、ネタ的なプログラムがあって、とても面白いです。
面白いだけじゃなくて、ソースコードを読むと、とても勉強にもなります。
いくつか紹介してみたいと思います。
Acme::Sneeze
http://search.cpan.org/~miyagawa/Acme-Sneeze-0.02/lib/Acme/Sneeze.pm
アメリカもしくは英語圏の人達は、誰かがくしゃみをするとその人に向かって「bless you」と言うのが慣習みたいです。
くしゃみは「神様のいたずら」とされているので、ご加護があるように、ということで「(God) bless you」と言うのです。
perlでは、blessしますね。
Acme::Sneezeでは、くしゃみ(sneeze)をすると、現在のpackageにblessするようになっています。
コードとしては下記のような感じ。
package Your::Object; use Acme::Sneeze; package Others; my $object = Your::Object->new; $object->sneeze; # "bless you!" print ref($object); # will print "Others"
sneeze()メソッドの中を見てみると、確かにblessされています。
sub sneeze { my $self = shift; my $pkg = caller; bless $self, $pkg; }
TODOとして、色んな国のくしゃみの慣習に対応していく事があります。
日本の場合は、「誰かが自分を噂している」というものですね。
これについては、すでに実装されています。
http://search.cpan.org/~miyagawa/Acme-Sneeze-JP-0.01/lib/Acme/Sneeze/JP.pm