On Wed, Oct 09, 2002 at 03:22:20PM -0700, nkuipers wrote: > The following is from page 75 in the Camel: > > "List assignment in scalar context returns the number of elements produced by > the expression on the <i>right</i> side of the assignment: > > $x = ( ($a, $b) = (7,7,7) ); #set $x to 3, not 2 > > ...." > > why. how.
Note that this is the same as $x = ($a, $b) = (7,7,7); = is right associative. ($a, $b) = (7,7,7) you already understand. This is the list assignment mentioned above. It is in a scalar context because of the assignment to $x, which is a scalar. But "the right side of the assignment" is still talking about the list assignment, and thus $x gets the number of elements in (7,7,7), which is 3, not ($a, $b) which would be 2. This allows you to do useful things like $x = () = some_function; which evaluates some_function in list context, and sets $x to the number of elements returned. -- Paul Johnson - [EMAIL PROTECTED] http://www.pjcj.net -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]