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