#-- p1 not changed on disk ;-) use File::Slurp; my $text = read_file( 'p1.pm' ) ; $text =~ s/^\s*my(\s+\$var1)/our$1/ms; eval $text; #-- above not recommended! package p2; # use p1; our @ISA=qw(p1); sub set_var1 { my $self = shift; my $new_var1 = shift; # $var1 = $new_var1; # return $var1; $p1::var1 = $new_var1; return $p1::var1; } 1;