Я бы порекомендовал настоящий шаблонизатор для выполнения такой замены, это позволит вам распространить его на вещи, которые не выглядят точно так же, как $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