sub Foo::new { bless {}, shift } sub Foo::get_bar { return Foo::Bar->new(); } sub Foo::Bar::new { bless {}, shift } sub Baz::new { bless { bar => pop }, shift } my $baz = Baz->new( Foo->new()->get_bar() ); print $baz->{bar},$/; __output__ Foo::Bar=HASH(0x80fbc2c)