sub Class::PObject::Template::__props { my $self = shift; my @isa = ref($self) || $self; while ( scalar @isa ) { my $target = shift @ISA; no strict 'refs'; if ( my $props = ${ $target . '::props' } ) { return $props; } else { push @isa, @{ $target . '::ISA' } } } }