package Package; use Class::Std; { my %trunk_of :ATTRS( :get init_arg => 'trunk' ); sub BUILD { my ($self, $ident, $arg_ref) = @_; return; } } package Package::Branch; use base qw(Package); use Class::Std; { my %branch_of :ATTRS( :get init_arg => 'branch' ); my %trees_of :ATTRS( :get ); sub BUILD { my ($self, $ident, $arg_ref) = @_; return; } sub START { my ($self, $ident, $arg_ref) = @_; $trees_of{$ident} = 'lots of ' . $self->get_branch . 'es and' . $self->get_trunk . 's'; } } #### use Package::Branch; my $obj = Package::Branch->new( { trunk => 'trunk', branch => 'branch' } ); print "'$obj->get_trunk'\n"; print "'$obj->get_branch'\n"; print "'$obj->get_trees'\n"; #### my $obj = Package->new( { trunk => 'trunk', branch => 'branch' } ); #### my $obj; $obj = Package->new( { trunk => 'trunk', branch => 'branch' } ); $obj = Package::Branch->new( { trunk => 'trunk', branch => 'branch' } );