package Foo::Bar; use vars qw( $VERSION ); sub method { my $self = shift; my $ego = __PACKAGE__.'::_implement::helper'; print "Foo::Bar::method: method = ", $ego->($self),"\n" } package Foo::Bar::_implement; use Alter qw(ego); sub helper { ego( shift)->{'method'}; } sub Foo::Bar::objectPackage { "Foo::Bar::Object"; } sub Foo::Bar::new { my $class = shift; warn "Foo::Bar::new(@_), class = $class\n"; my $thingy = bless \ my $ref, $class; ego ($thingy,{@_}); print "new thingy = $thingy\n"; $thingy; } sub Foo::Bar::Object::method { my $self = shift; print "Foo::Bar::Object::method: \$self = $self\n"; my $corona = ego( $self); print "Foo::Bar::Object::method: method = ",$corona->{'method'},"\n"; print "helper returns ",helper($self),"\n"; } 1;