Could you do us the favor of creating a code example that demonstrates the behavior?

I've taken your exact string and created variables and subroutines/constants as needed to provide a definition for everything the string tries to interpolate. Here is what I get:

#!usr/bin/env perl use strict; use warnings; use Term::ANSIColor; sub colorize { my($color, $string) = @_; return color($color) . $string . color('reset'); } use constant COUNTER_STATE_VAR => colorize(bright_blue => '(COUNTER_ST +ATE_VAR)'); use constant COUNTER_START_VAR => colorize(bright_blue => '(COUNTER_ST +ART_VAR)'); my $desc = colorize('bright_green' => '|desc|'); my $context_desc = colorize('bright_green' => '|context_desc|'); my $restart = colorize('bright_green' => '|restart|'); my $var = <<"HERE"; action=setwpos %u +1 ($desc) ; shift ($context_desc) @{[COUNTER_START_ +VAR]} ; shift ($context_desc) @{[COUNTER_STATE_VAR]} ; eval @{[COUNTE +R_STATE_VAR]} ( \$counter=@{[COUNTER_STATE_VAR]}; ++\$counter; ) ; ad +d ($context_desc) @{[COUNTER_START_VAR]} ; add ($context_desc) @{[COU +NTER_STATE_VAR]} ; assign @{[COUNTER_STATE_VAR]} 0 ; set ($context_de +sc) $restart HERE print colorize(bright_red => "<<<<<\n") . $var . colorize(bright_red = +> ">>>>>\n");

...produces...

<<<<< action=setwpos %u +1 (|desc|) ; shift (|context_desc|) (COUNTER_START_ +VAR) ; shift (|context_desc|) (COUNTER_STATE_VAR) ; eval (COUNTER_STA +TE_VAR) ( $counter=(COUNTER_STATE_VAR); ++$counter; ) ; add (|context +_desc|) (COUNTER_START_VAR) ; add (|context_desc|) (COUNTER_STATE_VAR +) ; assign (COUNTER_STATE_VAR) 0 ; set (|context_desc|) |restart| >>>>>

Try running it. It looks better in a terminal that supports color; it's easier to see where the interpolation is happening. And then tell us where you were expecting to see interpolation but failing to get the behavior you would expect. If this snippet doesn't reproduce the error you are seeing, then your sample was inadequate in demonstrating the issue, and you'll need to provide us a self-contained snippet we can run to see it happening.


Dave


In reply to Re: inconsistent variable interpolation in here document by davido
in thread inconsistent variable interpolation in here document by richard.sharpe

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.