Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:
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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: symbol table vs. eval
by chargrill (Parson) on Feb 23, 2006 at 18:30 UTC | |
by raflach (Pilgrim) on Feb 23, 2006 at 18:49 UTC | |
by ikegami (Patriarch) on Feb 23, 2006 at 18:59 UTC | |
by raflach (Pilgrim) on Feb 23, 2006 at 19:23 UTC | |
by ikegami (Patriarch) on Feb 23, 2006 at 19:37 UTC | |
by chargrill (Parson) on Feb 23, 2006 at 19:03 UTC | |
by ikegami (Patriarch) on Feb 23, 2006 at 18:45 UTC | |
by raflach (Pilgrim) on Feb 23, 2006 at 18:51 UTC | |
by ikegami (Patriarch) on Feb 23, 2006 at 18:53 UTC | |
|
Re: symbol table vs. eval
by Roy Johnson (Monsignor) on Feb 23, 2006 at 18:31 UTC | |
|
Re: symbol table vs. eval
by ikegami (Patriarch) on Feb 23, 2006 at 18:48 UTC |