use strict; use warnings; package Vehicle; sub new { my $class = shift; # Provide some defaults my $self = {wheels => 4, engine => 1800, doors => 4}; return bless $self, $class; } sub describe { my $self = shift; return <<"desc"; My engine is $self->{engine}cc. I have $self->{wheels} wheels and $self->{doors} doors. desc } package Car; our @ISA = ('Vehicle'); sub new { my $class = shift; my $self = new Vehicle ($class); $self->{colour} = 'blue'; return bless $self, $class; } sub describe { my $self = shift; my $str = $self->SUPER::describe (); return $str . <<"desc"; My colour is $self->{colour}. desc } package main; my $car = new Car; print $car->describe (); #### My engine is 1800cc. I have 4 wheels and 4 doors. My colour is blue.