print $o->bar->bar->bar->bar->bar->bar->bar->bar->bar->bar->bar->bar->bar->bar->baz; #### #!/usr/bin/perl -w use strict; package BaseClass; use strict; sub new { my $class = shift; my $self = {}; bless $self, $class; $self; } sub bar { return Foo->new; } package Foo; use strict; use base qw(BaseClass); sub baz {"Some data"} package main; use strict; my $o = Foo->new; print $o->bar->bar->bar->bar->bar->bar->bar->bar->bar->bar->bar->bar->bar->bar->baz;