in reply to object inheritance in non ~.pm files

Something that wasn't mentioned is that mammal::new never gets called for badgers, incorrectly giving badgers cold blood. I presume you want to call it so that all mammals have blood=>'warm' (at least by default).

##############inheritest.pl####################### #use mammal; my $object = mammal::badger->new; print $object->hunt; print $object->snuffle; ############################################## package mammal; sub new { my ($class) = @_; my %object = ('blood'=>'warm'); return bless \%object, $class; # <-- Added $class } sub snuffle { return "Snuffle"; } ############################################## package mammal::badger; use vars qw(@ISA); BEGIN { @ISA = qw(mammal); } # <-- Solution to the asked question sub new { my ($class) = @_; my $self = $class->SUPER::new(); # <-- Base class creates obj $self->{'stripes'} = 'true'; # <-- Add badger specifics return $self;; } sub hunt { return "for worms"; } ############################################## 1;