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