ex10.pm: package ex10; use Hash::Util; sub new { my $self = {}; $self->{ATTR_ABXCDEFG} = 1; $self->{ATTR_ABCXDEFG} = 2; $self->{ATTR_ABCDXEFG} = 3; $self->{ATTR_ABCDEXFG} = 4; $self->{ATTR_ABCDEFXG} = 5; bless($self); Hash::Util::lock_keys(%{$self}); return $self; } sub do_something_1 { my $self = shift; $self->{ATTR_ABCXDEFG} = 10; } sub do_something_2 { my $self = shift; print $self->{ATTR_ABCXDEFG}; } sub do_something_3 { my $self = shift; $self->{ATTR_AXBCDEFG} = 10; } sub do_something_4 { my $self = shift; print $self->{ATTR_AXBCDEFG}; } 1; ex10.pl: use ex10; $e = new ex10; $e->do_something_1; $e->do_something_2; $e->do_something_3; #see what will happen, if you comment out this $e->do_something_4; #try to comment out this