Re: "Secret" operators

[email protected] (Quantum Mechanic)
Newsgroups perl.fwp
Message-ID <[email protected]>
--- 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.