On Wed, Jan 30, 2002 at 04:46:28PM +0100, Joerg Ziefle wrote:
> ---------- Original Message ----------------------------------
> From: [EMAIL PROTECTED]
> Reply-To: [EMAIL PROTECTED]
> Date: Wed, 30 Jan 2002 16:24:20 +0100
> 
> >On Wed, Jan 30, 2002 at 03:55:32PM +0100, Joerg Ziefle wrote:
> >>    perl -e 'print "Current time is: @{[scalar localtime]}\n"'
> >> 
> >> Note the obvious difference to:
> >> 
> >>    perl -e 'print "Current time is: @{[localtime]}\n"'
> >
> >
> >Eh, it's the "scalar" that makes the scalar evaluation in those
> >examples. After all "@{[scalar localtime]}" gives the result
> >of 'localtime' in scalar context, not list context as you suggest.
> 
> Ok, got me :)
> The example was not the best and would have better been something along
> 
> perl -e 'print "1 + 3 = ${\(1+3)}\n"'

That would not be a very good example, and 1 + 3 is 4 in both scalar
and list context.

> BTW, can you think of a clunkier way to get the name of the current script as
> 
> print "Call me $${\localtime} darling.\n"
> 
> (and with some luck, that even fails :)?

I fail to understand what you mean.

> >And you even need the 'scalar' if you are using ${\(EXPR)}, as
> >\ doesn't propagate context; it provides list context.
> 
> But
> 
> ${\foo}
> 
> (as in your example) is still shorter than
> 
> @{[foo]}
> 
> (agreed however that the latter looks nicer).


Yeah, but \ has quite a high priority. Higher than most binary operators.
Most expressions you'd need to parenthesize.



Abigail

Reply via email to