sub Foo::new { bless {bar => pop}, shift } sub Foo::call_bar { $_[0]->{bar}->some_method($_[0]); } sub Bar::new { bless [@_], shift } sub Bar::some_method { print "the object whose method called this method: $_[-1]\n"; } my $o = Foo->new( Bar->new(qw(a list of args)) ); $o->call_bar(); __output__ the object whose method called this method: Foo=HASH(0x8108174)