How can I separate Perl variables from text in interpolated strings?

Viewed 21694

Consider:

print "    $foo", "AAAAAAAA", $foo, "BBBBBBBB";

Let's say I want to use this code with a print <<EOF;:

print <<EOF;
    $fooAAAAAAAA$fooBBBBBBBB";
EOF

That won't work, because Perl thinks I have a variable called $fooAAAAAAAA. How can I easily use print << with such lines when I have a long test to print?

3 Answers

Use ${foo}:

print <<EOF;
    ${foo}AAAAAAAA${foo}BBBBBBBB";
EOF

Here's another way to do it using printf:

printf << EOF, $foo, $foo;
   %dAAAAA%dBBBBBBB 
EOF

That is, assuming you want to print $foo as a decimal number. You can substitute %d with whatever format you need.

Related