Juerd wrote:
Rod Adams skribis 2005-05-26 4:15 (-0500):
From S02: "Array and hash variable names in scalar context
automatically produce references."
Since [...] produces a scalar arrayref, we end up with an arrayref one
both sides of the =.
No.
There is no scalar context on the LHS of the assignment operator.
And, assigning to a reference is impossible, as a reference is a VALUE,
not a VARIABLE (container).
Assigning to a reference thus makes no sense in the same way that
assigning a new value to the number 42 makes no sense. It is possible
with some tricks, but you really shouldn't ever want to do this.
You're right. It was late, and my brain missed a few details. I saw
"arrayref = arrayref", and C took over.
If I understand Juerd correctly, the logical extension would be to have
@m = 5;
be the same as:
@m = list(5);
The RHS of an array assignment is in list context. "list" is an operator
that does nothing more than force list context. In this case, it is
entirely redundant. But, of course, valid.
Of course it works that way. Why else would there be a want() function?
-- Rod Adams