Perl s / $ array [1] \ b / $ array [1]不会取代

时间:2019-09-30 08:26:49

标签: perl

我想用实际变量值替换字符串$ array [1]。 \ b似乎不起作用 有谁知道如何替换数组变量?什么是分隔符?

s / $ array [1] \ b / $ array [1]

2 个答案:

答案 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
相关问题