http://www.perlmonks.org?node_id=408356


in reply to Double interpolation of captured substrings

I would recommend using another way than interpolation to do what you want, but it can still be a fun exercise.

If you don't want to exercise and really need the functionality, look at String::Interpolate.

To show how to do what you tried to do, for educational purposes:

# Use something more sophisticated which escapes properly. sub quote { qq!"$_[0]"! } my ($x, $y, $z) = qw/ X Y Z /; my $str = 'Foo $x bar $y baz $z'; print $str; # Foo $x bar $y baz $z print quote($str); # "Foo $x bar $y baz $z" print eval quote(str); # Foo X bar Y baz Z
First generate a string that is double-quoted. This string then becomes what you would use in Perl if you had a change to type it yourself. Since it now is Perl code, use eval to evaluate it i.e. interpolate the variables.

ihb

See perltoc if you don't know which perldoc to read!
Read argumentation in its context!