On Sun, Jun 01, 2003 at 08:36:34PM -0400 Todd Wade wrote:

> "Tassilo Von Parseval" <[EMAIL PROTECTED]> wrote in
> message news:[EMAIL PROTECTED]
> > On Sun, Jun 01, 2003 at 11:22:32AM +0200 Kevin Pfeiffer wrote:
> >
> <snip />
> >
> >     open DATA, ">@{[ CFG ]}" or die ...;
> >
> > The part between @{[ ]} is arbitry Perl-code that is executed in list
> > context and the last expression evaluated in this Perl code is what gets
> > eventually printed.
> >
> 
> If you want to interpolate a scalar value in a string you should probably
> avoid creating an array reference, if only to avoid confusion:
> 
> [EMAIL PROTECTED] trwww]$ perl
> use constant A_CONSTANT => '/some/path';
> print("the constant's value is: ${ \A_CONSTANT }\n");
> Ctrl-D
> the constant's value is: /some/path

That's a bit better here because ${ \... } will execute the code in
scalar-context instead of list-context. However, it wont always work as
expected which is why I seldom use it. For instance:

    # this should work _theoretically_
    print "${ \localtime }";
    # but doesn't:
    __END__
    1

Instead one needs to explizitely enforce scalar context. I think this is
a little non-intuitive:

    print "${ \scalar localtime }";
    __END__
    Mon Jun  2 07:50:54 2003
    
Tassilo
-- 
$_=q#",}])!JAPH!qq(tsuJ[{@"tnirp}3..0}_$;//::niam/s~=)]3[))_$-3(rellac(=_$({
pam{rekcahbus})(rekcah{lrePbus})(lreP{rehtonabus})!JAPH!qq(rehtona{tsuJbus#;
$_=reverse,s+(?<=sub).+q#q!'"qq.\t$&."'!#+sexisexiixesixeseg;y~\n~~dddd;eval


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to