sub the_problem { my $self = shift; $self->{_the_problem} = shift if (@_); # sets _the_problem to the value we've been passed *if* we've been passed a value $self->{_the_problem}; # returns the current value of _the_problem } #### use strict; use A::B::C; #use your modules. Pay attention to btrott's advice above on Exporter etc. ... my $foo = new A::B::C; $foo->the_problem("argle bargle"); # $foo->{_the_problem} now eq 'argle bargle' print $foo->the_problem(); # prints "argle bargle"