On Wed, May 11, 2005 at 02:12:41PM -0700, Larry Wall wrote: > On Thu, May 12, 2005 at 04:19:02AM +0800, Autrijus Tang wrote: > : Hm? Under #2, no matter whether @foo is (1) or (1,2), the construct > : (@foo)[0] would always means @foo.[0]. Not sure how the length of @foo > : matters here. > > Tell you what, let's require P5's (...)[] to be translated to [...][], > so (...)[] should assume scalar context that will return some kind of > array reference. (What Luke said about (1,(2,3),4)[] still holds, though. > Commas create lists, and lists by default impose list context, and > parens are only for grouping in lists, not scalarifiying.)
Sure (and done). Now that #1 is eliminated, the question is now
whether a simple scalar can be treated as a small (one-element) array
reference, much like a simple pair can be treated as a small
(one-element) hash reference.
1.[0]; # evaluates to 1?
If yes, then (1)[0] means the same as 1.[0] and 1.[0][0][0]. If no,
(1)[0] is a runtime error just like 1.[0] -- i.e. unable to find the
matching .[] multisub under Int or its superclasses.
Thanks,
/Autrijus/
pgpsJazzKv3Tb.pgp
Description: PGP signature
