From: "Uri Guttman" <u...@stemsystems.com>
> >>>>> "JK" == Jenda Krynicky <je...@krynicky.cz> writes:
> 
>   JK> From: "Joseph L. Casale" <jcas...@activenetwerx.com>
>   >> Inside a here doc, how can I force an expression to be evaluated
>   >> such as localtime:
> 
> here docs are just a different form of string so any technique which
> works in quoted strings will work in here docs. basic here docs are
> double quoted so they will interpolate scalars and arrays.
> 
>   JK> use Interpolation eval => 'eval';
> 
>   JK> print <<"END";
> 
>   JK>  $eval{localtime time}
>   JK>  Foo
>   JK> Bar 
> 
>   JK> END
> 
> i would say to just use a temporary scalar variable. there is no shame
> in doing this and it is simpler than using the Interpolation module
> which is doing tied things and calling eval (which is dangerous).

Tie() yes, eval"" no. Neither the fact I called the hash eval, nor 
that I told it to use the builtin interpolation named eval means 
there is a string eval involved.

See the docs online, there are quite a few more builtins and you can 
create your own interpolation. Eg. for formatting:


use Interpolation d => 'commify';

my $total = 54858*745;

print <<"END";
blah blah blah $d{$total}
blah blah
END


Jenda
===== je...@krynicky.cz === http://Jenda.Krynicky.cz =====
When it comes to wine, women and song, wizards are allowed 
to get drunk and croon as much as they like.
        -- Terry Pratchett in Sourcery


-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to