The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Parent;
use strict;
use Class::AutoClass;
use vars
  qw(@ISA @AUTO_ATTRIBUTES @OTHER_ATTRIBUTES @CLASS_ATTRIBUTES %SYNONYMS %DEFAULTS);
@ISA              = qw(Class::AutoClass);
@AUTO_ATTRIBUTES  = qw(name sex address dob a _b c d z real);
@OTHER_ATTRIBUTES = qw(b age);
@CLASS_ATTRIBUTES = qw(species population class_hash);
%SYNONYMS         = ( gender => 'sex', whatisya => 'sex', syn=>'real' );
%DEFAULTS = (
              a          => 'parent',
              b          => 'virtual parent',
              c          => 'default set in parent, used in kids',
              z          => 'default that is never used',
              species    => 'Dipodomys gravipes',
              population => 42,
              class_hash => {
                              this  => 'that',
                              these => 'those',
              }
);
Class::AutoClass::declare(__PACKAGE__);

sub _init_self {
 my ( $self, $class, $args ) = @_;
 return
   unless $class eq __PACKAGE__;    # to prevent subclasses from re-running this

}
sub age { print "Calculate age from dob. NOT YET IMPLEMENTED\n"; undef }
# NG 05-12-07. virtual attribute for regression test
sub b {
  my $self=shift;
  @_? $self->_b(@_): $self->_b(@_);
}
1;