package Parent; use Child; sub new { my $that = shift; my $class = ref($that) || $that; my $self = { children=>undef; }; bless($self, $class); $self->init(); return $self; } sub init { my $xmax=5; my $ymax=5; foreach my $x (0 .. $xmax) { foreach my $y (0 .. $ymax) { $self->{'children'}[$x][$y]=Child->new($self); } } } package Child; use Parent; sub new { my $that = shift; my $class = ref($that) || $that; my $parent = shift; my $self = { parent => \$parent; }; bless($self, $class); return $self; } sub whereami { #i don't know how to ask the parent here; }