NAME
    MooseX::Singleton - turn your Moose class into a singleton

VERSION
    Version 0.03, released 16 Dec 07

SYNOPSIS
        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;

DESCRIPTION
    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.

    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.

    "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".

    Alternatively, "YourPackage->method" should just work. This includes
    accessors.

TODO
    Always more tests and doc
    Fix speed boost
        "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.

BUGS
    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.

AUTHOR
    Shawn M Moore <sartak@gmail.com>

SOME CODE STOLEN FROM
    Anders Nor Berle <debolaz@gmail.com>

COPYRIGHT AND LICENSE
    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.