in reply to printig with variables in text

You could be a bit more specific, i.e. add some explanation on what exactly you are trying to achieve.

As usual there are several approaches

Hope this helps

Replies are listed 'Best First'.
Re^2: printig with variables in text
by Anonymous Monk on Aug 03, 2008 at 19:10 UTC
    One way to do it is to inline the file in a HEREDOC, the variables will be interpolated.
    I can't remember ever seeing this done before. Can you please give a quick code example or a link to some discussion of it?
      my $oo = 'oop'; my $oop = <<"POOP"; I like to say p$oo Hello $oo POOP print $oop __END__ I like to say poop Hello oop
        But that's just standard double-quotish interpolation.

        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