package Father; my $store_data = { }; sub new { my $class = shift; return bless { data => $store_data }, $class; } 1; package Daughter; use parent qw(Father); sub status { my $self = shift; $self->{data}->{news} = 'bad'; return $self; } sub other { my $self = shift; return $self; } 1; package Son; use parent qw(Father); sub set { my $self = shift; $self->{data}->{news} = 'good'; return $self; } 1; use Daughter; use Son; my $self = Daughter->new()->status; print Dumper($self); $self = Son->new()->set; print Dumper($self); $self = Daughter->new()->other; print Dumper($self); $VAR1 = bless( { 'data' => { 'news' => 'bad' } }, 'Daughter' ); $VAR1 = bless( { 'data' => { 'news' => 'good' } }, 'Son' ); $VAR1 = bless( { 'data' => { 'news' => 'good' } }, 'Daughter' );