my %data; # private hash sub new { my $data = rand(); my $self = bless \$data; $data{$$self}{BKG_IMAGE} = 'image'; } my $bkg_img = # private anon-sub sub { my $self = shift; if (@_) { $data{$$self}{BKG_IMAGE} = shift; } $data{$$self}{BKG_IMAGE}; } # called as: $self->$bkg_img('new_image') # or $image = $self->$bkg_img();