I'm currently in a situation in which I need to create variables whose names are determined by other variable values. (this is to support older code which relies on those variables having those names while moving to a new architecture in which the info is stored in a db.
I have:
my $test="my_variable_name"; #imagine this is a hash key my $default_value="the value I set"; #while this is the hash value eval("\$$test = '$default_value';"); print "the value of \$my_variable_name = $my_variable_name\n"; $my_variable_name = "A new value"; print "the value of \$my_variable_name = $my_variable_name\n";
So far, so good. That works.
I'm fairly certain that there is a Better(tm) way to do this using symbol table manipulation, but I'm not sure how to go about it. I've tried all of:
my $test="my_variable_name"; my $default_value="the value I set"; *$test = $default_value; #*{$test} = $default_value; #*{"$test"} = $default_value; #*{"$test"} = \$default_value; #*{"$test"} = \&default_value; print "the value of \$my_variable_name = $my_variable_name\n"; $my_variable_name = "A new value"; print "the value of \$my_variable_name = $my_variable_name\n";
none of which work. (all commented lines have been tried).
Any pointers would be appreciated. Thanks
In reply to symbol table vs. eval by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |