my $session = My::Session->new(); my $foo = Foo->new( session => $session ); # and foo creates Bar passing session, which creates # Baz passing session #### my $session = My::Session->new(); my $foo = Foo->new(); ... package Baz; sub new { ... $self->{session} = My::Session->new(); }