X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FSingleton%2FMeta%2FClass.pm;h=51ca11cc51e6de6821d346014b8eed3a579ce24c;hb=3822ace201bf25804b3b760238b59df07890c634;hp=447859d5fe8796cbcbd6af37454e34dfd6dd9352;hpb=109b110b1d5969c8ae2ec7a5e5d86066f895d828;p=gitmo%2FMooseX-Singleton.git diff --git a/lib/MooseX/Singleton/Meta/Class.pm b/lib/MooseX/Singleton/Meta/Class.pm index 447859d..51ca11c 100644 --- a/lib/MooseX/Singleton/Meta/Class.pm +++ b/lib/MooseX/Singleton/Meta/Class.pm @@ -16,5 +16,19 @@ sub initialize { ); }; +override construct_instance => sub { + my ($class) = @_; + my $pkg = $class->name; + + no strict 'refs'; + + # create exactly one instance + if (!defined ${"$pkg\::singleton"}) { + ${"$pkg\::singleton"} = super; + } + + return ${"$pkg\::singleton"}; +}; + 1;