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;
In reply to Re: object inheritance in non ~.pm files
by ikegami
in thread object inheritance in non ~.pm files
by g0n
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |