in reply to symbol table vs. eval

Lexical (my) variables are not stored in the symbol table. You could, however, make a hash of references to the variable names. Then, with some dereferencing,
my $test="my_variable_name"; #imagine this is a hash key my $default_value="the value I set"; #while this is the hash value my %hash = ($test => \$default_value); print "the value of \$$test = ${$hash{$test}}\n"; ${$hash{$test}} = "A new value"; print "the value of \$$test = ${$hash{$test}}\n";
I'm not sure this demonstrates what you want to do, but hopefully it gives you an idea about how to approach it.

Caution: Contents may have been coded under pressure.