Class::Singleton は、べつにいらない。

Class::Singleton は、やたらコメントがながいのでだまされがちだが、実は以下のコードで同等のことができるので、あれを利用する意味は「シングルトンってわかりやすい!」ってこと以外にはなかったりする。

package MySingletonThing;
my $instance = shift;
sub instance {
    $instance //= do {
      my $class = shift;
      my %args  = @_==1 ? %{$_[0]} : @_;
      bless {%args}, $class;
    };
}

Published: 2011-02-27(Sun) 05:20