package MooseX::Singleton;
-
use Moose::Role;
-our $VERSION = 0.01;
+our $VERSION = 0.02;
override new => sub {
- my ($class) = @_;
-
- no strict qw/refs/;
+ my ($class) = @_;
- my $instance = super;
+ no strict 'refs';
- ${"$class\::singleton"} = $instance;
+ # create our instance if we don't already have one
+ if (!defined ${"$class\::singleton"}) {
+ ${"$class\::singleton"} = super;
+ }
- return $instance;
+ return ${"$class\::singleton"};
};
+# instance really is the same as new. any ideas for a better implementation?
sub instance {
- my ($class) = @_;
-
- no strict qw/refs/;
-
- return ${"$class\::singleton"};
+ shift->new(@_);
}
1;