--- 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 
 

Reply via email to