我有一个Perl脚本,其中我从包含变量名的配置文件中读取一行。当我将行读入变量时,需要用给定值替换的变量名不会被输入。我正在使用配置:微型访问我的配置文件。示例:
配置文件
thing=I want to $this脚本
$this = "run";
my $thing = $Config->{thing};
print $thing;print $thing的名字是I want to $this。我希望它能以I want to run的形式出现。
发布于 2011-01-19 15:11:49
好,所以您希望Perl计算您的字符串,而不是打印它。
这实际上在Perl FAQ:如何在文本字符串中展开变量?中进行了介绍。
简而言之,您可以使用以下正则表达式:
$string =~ s/(\$\w+)/$1/eeg;要小心:从脚本外部计算任意字符串的是一个主要的安全风险。好的黑客可以利用这一点在您的服务器上执行任意代码。
布赖恩的常见问题解答涵盖了其中的一些。
发布于 2011-01-19 15:11:22
使用eval
print eval $thing;对于包变量,也可以使用符号引用
$thing =~ s/\$(\w+)/$$1/;https://stackoverflow.com/questions/4736844
复制相似问题