> : But when you start interpolating, you get into a big mess:
> :  h<\qq[$interpolated]> = want(); # ???
> :  h<<$foo>> = want(); # ???
>
> I think that, as with functions called in unknown context, we should
> just force the RHS here to list context, and rely on the RHS to add
> extra context as necessary if they really mean scalar.  If something
> really is always producing a scalar value, it doesn't matter if it's
> called in list context.

That makes sense, but that would make
 %num_of_lines<file> = @file
not DWIM... of course that would translate into
 %num_of_lines<file> = scalar @file
so maybe that's OK.

> Any bit of expression by default evaluates at ordinary run time, but can
> be forced to evaluate earlier by surrounding context.
What you're saying is that
 BEGIN { $c=1 }
 $c=0;
 q:c($c)/.../
interpolates, because the $c in line three is evaluated after the $c in line 
one but before the $c in line two, right? If you don't obfuscate on purpose 
(like I did), that makes sense.
-- 
-Roie
v2sw6+7CPhw5ln5pr4/6$ck2ma8+9u7/8LSw2l6Fi2e2+8t4TNDSb8/4Aen4+7g5Za22p7/8
[ http://www.hackerkey.com ]

Reply via email to