我有一个Perl脚本,我从一个包含变量名的配置文件中读取一行.当我将该行读入变量时,不会放入需要用给定值替换的变量名.我使用Config :: Tiny来访问我的配置文件.例:
thing=I want to $this
Run Code Online (Sandbox Code Playgroud)
$this = "run";
my $thing = $Config->{thing};
print $thing;
Run Code Online (Sandbox Code Playgroud)
print $thing出来了I want to $this.我想要它出来I want to run.
好的,所以你希望Perl评估你的字符串而不是打印它.
本Perl常见问题实际上涵盖了这一点: 如何在文本字符串中扩展变量?
简而言之,您可以使用以下正则表达式:
$string =~ s/(\$\w+)/$1/eeg;
Run Code Online (Sandbox Code Playgroud)
小心:从脚本外部评估任意字符串是一个主要的安全风险.一个优秀的黑客可以利用它来在您的服务器上执行任意代码.
Brian的FAQ答案涵盖了其中一些内容.