$obj->{other_obj}->method; #### $obj->other_obj()->method; #### $obj->other_obj->method; #### use warnings; use strict; package Blah; { sub new { return bless {}, $_[0]; }; sub one { $_[0]->{num}++; return $_[0]; }; sub say { print "$_[0]->{num}\n"; }; } package main; { my $obj = Blah->new; $obj->one()->say; # or $obj->one->say; }