MooseX::Singleton - turn your Moose class into a singleton
Version 0.04, released 03 Feb 08
package MyApp; use MooseX::Singleton; has env => ( is => 'rw', isa => 'HashRef[Str]', default => sub { \%ENV }, ); package main; delete MyApp->env->{PATH}; my $instance = MyApp->instance; my $same = MyApp->instance;
A singleton is a class that has only one instance in an application. MooseX::Singleton lets you easily upgrade (or downgrade, as it were) your Moose class to a singleton.
MooseX::Singleton
All you should need to do to transform your class is to change use Moose to use MooseX::Singleton. This module uses a new class metaclass and instance metaclass, so if you're doing metamagic you may not be able to use this.
use Moose
use MooseX::Singleton
MooseX::Singleton gives your class an instance method that can be used to get a handle on the singleton. It's actually just an alias for new.
instance
new
Alternatively, YourPackage->method should just work. This includes accessors.
YourPackage->method
instance invokes new every time Package->method is called, which incurs a nontrivial runtime cost. I've implemented a short-circuit for this case, which does eliminate nearly all of the runtime cost. However, it's ugly and should be fixed in a more elegant way.
Package->method
All complex software has bugs lurking in it, and this module is no exception. If you find a bug please either email me, or add the bug to cpan-RT.
Shawn M Moore <sartak@gmail.com>
Anders Nor Berle <debolaz@gmail.com>
Ricardo SIGNES <rjbs@cpan.org>
Copyright 2007 Shawn M Moore.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install MooseX::Singleton, copy and paste the appropriate command in to your terminal.
cpanm
cpanm MooseX::Singleton
CPAN shell
perl -MCPAN -e shell install MooseX::Singleton
For more information on module installation, please visit the detailed CPAN module installation guide.