in reply to Re^3: odd =>behavior
in thread odd =>behavior
But = has slightly higher precedence than , so that second example is really parsing as if parenthesized ( $result = 3 ), 2, 1; rather than $result = LIST (and you can get the same behavior out of both the sub call and the scalar assignment by explicitly parenthesizing it as $result = ( 3, 2, 1 );). I don't think that disproves anything . . .
Update: using B::Deparse shows the differences:
$ perl -MO=Deparse,-p,-q <<'EOT' sub return_list { return 3, 2, 1 } my $result = return_list(); print "$result\n"; $result = 3, 2, 1; print "$result\n"; $result = ( 3, 2, 1 ); print "$result\n"; EOT sub return_list { return(3, 2, 1); } (my $result = return_list()); print(($result . "\n")); (($result = 3), '???', '???'); print(($result . "\n")); ($result = ('???', '???', 1)); print(($result . "\n")); - syntax OK
Update: Tweaked wording in parenthesized phrase slightly to hopefully make it clearer what I was referring to. I definitely agree it's a tricky case, but I'd say the problem is more "Everything that looks to the eye like a LIST in scalar context isn't" than a case where a LIST in scalar context isn't the value of the final element.
The cake is a lie.
The cake is a lie.
The cake is a lie.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^5: odd =>behavior
by chromatic (Archbishop) on Dec 04, 2007 at 19:15 UTC | |
by Fletch (Bishop) on Dec 04, 2007 at 19:52 UTC | |
by ysth (Canon) on Dec 05, 2007 at 02:18 UTC |