メメメモモ

プログラミング、筋トレ、ゲーム、etc

ACME

CPANAcmeという名前空間があることを知りました。
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