I have a Perl script where I read in a line from a configuration file that contains a variable name. When I read the line into a variable the variable name that needs to be replaced with the given value is not put in. I am using Config::Tiny to access my configuration file. Example:
thing=I want to $this
$this = "run";
my $thing = $Config->{thing};
print $thing;
print $thing
comes out as I want to $this
. I want it to come out as I want to run
.
OK, so you're wanting Perl to evaluate your string as opposed to print it.
This is actually covered in this Perl FAQ: How can I expand variables in text strings?
In short, you can use the following regular expression:
$string =~ s/(\$\w+)/$1/eeg;
BE CAREFUL: Evaluating arbitrary strings from outside of your scripts is a major security risk. A good hacker can exploit this to execute arbitrary code on your server.
brian's FAQ answer covers some of this.