my $x = new Tinia_CanExtender() ; my $y = new Tinia_CanPwm($x) ; package Tinia_CanPwm ; @ISA = qw(Tinia_CanExtender); sub new { my $class = shift ; my $this = bless({} , $class) ; my ( $parent ) = @_ ; $this->{PARENT} = $parent ; return $this ; } package Tinia_CanExtender ; sub new { my $class = shift ; my $this = bless({} , $class) ; return $this ; } sub set { my $self = shift ; my ($state,$set_by) = @_; ... }