#!/usr/local/bin/perl use NEXT; use strict; package ROOT; sub traverse { print __PACKAGE__, "\n"; } package LEFT_CHILD; #use base 'ROOT'; use vars qw( @ISA ); @ISA = qw( ROOT ); sub traverse { my $package = shift; print __PACKAGE__, "\n"; $package->NEXT::UNSEEN::traverse(); } package RIGHT_CHILD; #use base 'ROOT'; use vars qw( @ISA ); @ISA = qw( ROOT ); sub traverse { my $package = shift; print __PACKAGE__, "\n"; $package->NEXT::UNSEEN::traverse(); } package GRANDCHILD; #use base 'LEFT_CHILD'; #use base 'RIGHT_CHILD'; use vars qw( @ISA ); @ISA = qw( LEFT_CHILD RIGHT_CHILD ); package ::; GRANDCHILD->traverse();