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
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs