我想用实际变量值替换字符串$ array [1]。 \ b似乎不起作用 有谁知道如何替换数组变量?什么是分隔符?
s / $ array [1] \ b / $ array [1]
答案 0 :(得分:2)
[ ... ]
在正则表达式中具有特殊含义(它定义了“字符类”)。如果要使用[
来表示[
,则需要使用\
对其进行转义。
s/\$array\[1]/$array[1]/
更新:向$
添加了转义。已删除\b
。
答案 1 :(得分:1)
我建议使用真正的模板引擎来执行这种替换,这将使您可以将其扩展到看起来与$array[1]
完全不同的东西,而不会使其变得更加复杂,但是您需要更改输入模板引擎的期望值。一种选择是Text::Template。
use strict;
use warnings;
use Text::Template 'fill_in_string';
my $input = 'foo {$array[1]} bar';
my @array = 1..10;
my $rendered = fill_in_string $input, HASH => {array => \@array};
print $rendered, "\n"; # foo 2 bar