package parser; my $var1; my $var2; my $var3; ... #set values -- this part works sub parse{ ... $self->{$var1} = 'a'; $self->{$var2} = 'b'; $self->{$var3} = 'c'; ... } #get values -- doesn't work. $var_name is a string such as 'var1', # so would be called as get_var('var1'). My goal is to get # back the value of $var1 sub get_var{ my ($self, $var_name) = @_; return $self->{$$var}; #also tried double quotes, etc. }