What I had imagined from dHarry's reply was that a here-doc could somehow be set up to do both levels of interpolation at once, i.e., interpolate a string, and then interpolate things that look like scalars within the string interpolated in the first step.
After using a here-doc (but this could have been an ordinary double-quoted string) to do the file interpolation, the code below uses an eval in the usual way to do the second-level interpolation; it's that eval step that I had hoped to eliminate.
use warnings; use strict; my $foo = 'there'; my $bar = 'now'; my $lines = <<'LINES'; # no interpolation here hello $foo goodbye $bar LINES open my $fh, '<', \$lines or die "opening ref: $!"; local $/ = undef; # file slurp mode my $file_interpolation = <<"FILE_INTERPOLATION"; pre-slurp @{[ <$fh> ]} post-slurp FILE_INTERPOLATION # can eval() step be eliminated? my $eval_interpolation = eval "qq{$file_interpolation}"; print "$file_interpolation \n"; print "$eval_interpolation \n";
Output:
pre-slurp hello $foo goodbye $bar post-slurp pre-slurp hello there goodbye now post-slurp
In reply to Re^4: printig with variables in text
by Anonymous Monk
in thread printig with variables in text
by moked
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |