my $s = 'Hello [2][1]';
my @a = ('x','y','z');
my $array_name = 'a';
{
no strict 'refs';
$s =~ s/\[(\d{1,2})\]/$array_name->[$1]/g;
}
print $s;
Better:
my $s = 'Hello [2][1]';
my @a = ('x','y','z');
my $array_name = 'a';
my $array_ref = do { no strict 'refs'; \@$array_name };
$s =~ s/\[(\d{1,2})\]/$array_ref->[$1]/g;
print $s;
But why do you want to use variable variable names?
Good:
my $s = 'Hello [2][1]';
my @a = ('x','y','z');
my $array_ref = \@a;
$s =~ s/\[(\d{1,2})\]/$array_ref->[$1]/g;
print $s;
Simplified:
my $s = 'Hello [2][1]';
my @a = ('x','y','z');
$s =~ s/\[(\d{1,2})\]/$a[$1]/g;
print $s;
|