The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package t::Object::Singleton::Hooked;
use strict;
use Class::InsideOut qw( public register id :singleton );

public name => my %name; 

use vars qw/$self/;

sub get_instance { 
    $self ||= register( bless \(my $s), shift);
    return $self;
}

sub ATTACH {
    my ($class, $cloning, $data) = @_;
    if ( $self ) {
        return $self;
    }
    else {
        my $obj = $class->get_instance();
        my $package = __PACKAGE__;
        $name{ id $obj } = $data->{properties}{$package}{name};
        return $obj;
    }
}

1;