|Just another Perl shrine|
list assignment to list in scalar contextby Anonymous Monk
|on Nov 09, 2012 at 02:58 UTC||Need Help??|
Anonymous Monk has asked for the
wisdom of the Perl Monks concerning the following question:
Why does a list assignment to a list in scalar context return the number of elements on the right side list, but NOT the last element of the left side list that has been assigned values?
I know that:
Now check a scalar assignment to a scalar in scalar context: if( $i = 0 ) which will evaluate to the value of $i on the left side, thus evaluate to 0, thus evaluate to FALSE
but consider an example of list assignment above:
To me, it seems like it should evaluate to the value of list ($k, $v) on the left side just like $i above, thus should evaluate to the last element of list ($k, $v) --- $v, thus evaluate to 0 and at last should evaluate to --- FALSE, although I know the correct answer is it will evaluate to true.
So, the question is: for what purpose are the designing principles of scalar assignment and list assignment both in scalar context completely different? Just for convenience of usage? Isn't that a bit confusing?