sub get { my($self,$attr) = @_; my $return_val; # if valid attribute, assign it as a return value if($attr =~ m/\A\w+\z/) { my $eval_string = sprintf '$return_val = $%s_of{refaddr $self};', $attr; eval $eval_string; } # otherwise, carp a warning else { carp("Invalid attribute '$attr'"); } return $return_val; } #### if($attr =~ m/\A\w+\z/) { $return_val = ${$attr}{refaddr $self}; }