#!/usr/bin/perl -w use strict; package ParentClass; sub new { my $class=shift; return bless {},$class; } sub run { my $self=shift; $self->hello(); $self->risky(); $self->world(); } sub hello { print "*** Hello "; } sub risky { print "risky "; } sub world { print "world! ***\n"; } package ChildClass; our @ISA=qw(ParentClass); sub risky { die "You're not allowed to call risky()"; } package main; $|=1; print "ParentClass:\n"; my $p=ParentClass->new(); $p->run(); print "ChildClass:\n"; my $c=ChildClass->new(); $c->run(); #### #!/usr/bin/perl -w use strict; package BaseClass; sub new { my $class=shift; return bless {},$class; } sub hello { print "*** Hello "; } sub world { print "world! ***\n"; } package FormerParentClass; our @ISA=qw(BaseClass); sub risky { print "risky "; } sub run { my $self=shift; $self->hello(); $self->risky(); $self->world(); } package FormerChildClass; our @ISA=qw(BaseClass); sub run { my $self=shift; $self->hello(); $self->world(); } package main; $|=1; print "FormerParentClass:\n"; my $p=FormerParentClass->new(); $p->run(); print "FormerChildClass:\n"; my $c=FormerChildClass->new(); $c->run();