Use of uninitialized value in addition (+) at Parent.pm line 17. Use of uninitialized value in addition (+) at Parent.pm line 17. #### package Parent; use strict; use warnings; use Carp; use Data::Dumper; use Class::MethodMaker get_set => [ { -read_cb => sub { ## THIS ONE IS NOT WORKING ......... my ($self,$val1,$val2) = shift; $self->{val1} = $val1; $self->{val2} = $val2; #### my $out = $self->{val1} + $self->{val2}; return $out; } },'add', { -read_cb => sub { $_[1] - 1; } },'subtract' ], new => 'new'; 1; # Child Class ............. package Child; use Data::Dumper; use Parent; my (%val1,%val2); sub new { bless [ ] => shift; } sub subtract { $self = shift; $val1{$self}=shift; $val2{$self}=shift; return $val1{$self}-$val2{$self}; } $myobj = Child->new(); $subobj=$myobj->subtract(34,31); # this method s working print Dumper $subobj; $pObj = Parent->new(); # This is not working $pObj->add(100,3); print Dumper $pObj; $pObj=Parent->subtract(100); # subtracts 1 from 100 . print Dumper $pObj;