--- Bernie Cosell <[EMAIL PROTECTED]> wrote: > On 1 Feb 2005 at 12:36, Ronald J Kimball wrote: > > > ... A list assignment in scalar context > > returns the number of elements on the right-hand > side of the assignment. > > Which is an odd inconsistency, because in list > context a list assignment > returns the left-hand-side-list, so you might guess > that in scalar > context it'd return the number of elements in the > lhs list...
It seems there are multiple contexts flying around. I'm no expert, but it seems to develop this way: $foo = $bar = (9,8,7); RHS list $bar scalar $bar <- 7 (last element of list) $foo <- 7 $foo = ($bar) = (9,8,7); RHS list ($bar) array $bar <- 7 (rest discarded) $foo <- 3, size of RHS of ($bar) assignment Therefore, $foo = () = (9,8,7) RHS list () array no assignment targets, but... $foo <- 3, size of RHS of () assignment My assumption is that =()= creates an intermediate assignment, which subtley shifts the context so that $foo gets the count of (9,8,7) in the last case, instead of the last element of (9,8,7) as in the first case. =()= forks the assigment flow. The elements of the right operand are assigned (if possible) to the contained array, as in $foo = ($bar) = (9,8,7); or $foo = @bar = (9,8,7); The left operand of =()= is assigned the element count of the other assignment. Someone familiar with the core will have to clue me in on the accuracy of my theory. -QM ===== ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Quantum Mechanics: The dreams stuff is made of __________________________________ Do you Yahoo!? The all-new My Yahoo! - Get yours free! http://my.yahoo.com