my $caller_pkg = caller(); # meta model helpers *{$caller_pkg . '::class'} = \&class; *{$caller_pkg . '::role'} = \&role; # instance attribute access helpers *{$caller_pkg . '::_'} = \&_; # class attribute access helpers *{$caller_pkg . '::__'} = \&__; #### class 'Perl6::Object' => { 'class' => { methods => { # the default .new() 'new' => sub { my ($class, %params) = @_; return $class->bless(undef, %params); }, .... .... ## rest of the code #### name is Perl6::Object params is $VAR1 = { 'class' => { 'methods' => { 'CREATE' => sub { "DUMMY" }, 'bless' => sub { "DUMMY" }, 'isa' => sub { "DUMMY" }, 'new' => sub { "DUMMY" }, 'can' => sub { "DUMMY" } } }, 'instance' => { 'methods' => { 'isa' => $VAR1->{'class'}{'methods'}{'isa'}, 'DESTROYALL' => sub { "DUMMY" }, 'BUILDALL' => sub { "DUMMY" }, 'can' => $VAR1->{'class'}{'methods'}{'can'} }, 'submethods' => { 'BUILD' => sub { "DUMMY" } } } };