my %foo : Field; # no accessor
our %foo : Field; # accessor created automatically
####
use Test::More tests => 3;
use strict;
use warnings;
{
package Foo;
use base qw(Class::InsideOut);
sub new { bless {}, shift };
my %foo :Field;
sub foo {
my $self = shift->self;
@_ ? $foo{$self} = shift : $foo{$self};
};
sub Num_objects { scalar(keys(%foo)) };
package Bar;
use base qw(Class::InsideOut);
};
{
my $o1 = Foo->new;
$o1->foo(1);
{
my $o2 = Foo->new;
$o2->foo(2);
bless $o2, 'Bar';
is( Foo->Num_objects, 2, '2 objects' );
};
is( Foo->Num_objects, 1, '1 object' );
};
is( Foo->Num_objects, 0, '0 objects' );
##
##
1..3
ok 1 - 2 objects
ok 2 - 1 object
ok 3 - 0 objects