Suresh Govindachar wrote:

>   $Bill Luebkert wrote:
>   > Suresh Govindachar wrote:
>   > 
>   >> Thanks for @{[]} -- it is better than evaluating outside the 
>   >> here doc.  This is because the expressions I need to evaluate 
>   >> are fairly complex and the variables involved come from hashes.
>   >> Moreover, I would like to do assignments inside the here doc 
>   >> that do not show up in $stuff at all, for example: 
>   >> 
>   >>   |my $foo = 3;
>   >>   |my %boo=();
>   >>   |
>   >>   |my $stuff = <<EOD;
>   >>   |  @{[eval{$boo{hoo1}=5; "remove_me";}]}
>   >>   |  Twice $foo is @{[2 * $foo]} 
>   >>   |  Second line
>   >>   |  @{[eval{$boo{hoo2}=2; "remove_me";}]}
>   >>   |  Third line says that \$boo{hoo1} is $boo{hoo1}.
>   >>   |EOD
>   >>   |
>   >>   |$stuff =~ s/\s*remove_me\s*$//gm;
>   >> 
>   >> What is the name for the @{[]} thingie -- how can it be found
>   >> in perldoc?  And is there a way to avoid the remove_me part?
>   > 
>   > perlfunc scalar
>   > perlref near end of "Using References" just before "Symbolic references"
> 
>   I was concerned that I would not be able to remember @{[]} when I
>   next needed it, but the preceding reference explains how @{[]}
>   works and so makes it easy to remember.  Thanks for the precise
>   references.
>     
>   > "remove_me" => '' would be the simple way.  You're getting the
>   > eval result back and have to drop it.
> 
>   Returning '' works if the here-doc has good stuff to the left of
>   the @{[]}.  But when @{[]} is all by itself, use of '' results in
>   the here-doc having white lines that are not easily distinguished
>   from actual white lines in the here-doc.  (I tried returning '\b\b'
>   but it didn't help.)

Change:
  @{[eval{$boo{hoo1}=5; "remove_me";}]}
  Twice $foo is @{[2 * $foo]}

To:
  @{[eval{$boo{hoo1}=5; '';}]}Twice $foo is @{[2 * $foo]}

That should make your lines/spacing right.

_______________________________________________
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to