Front page | perl.fwp | Postings from February 2005

## Re: "Secret" operators

From:
Quantum Mechanic
Date:
February 1, 2005 11:55
Subject:
Re: "Secret" operators
Message ID:
20050201195500.13466.qmail@web14021.mail.yahoo.com
```
--- Bernie Cosell <bernie@fantasyfarm.com> 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
\$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

```