my (@a,$b,%h) behaves like a function with infinte prototype [(\[@$%];\[@$%]\[@$%]...]
No references are taken. So that's both an inaccurate and a very complex way of thinking about it. It's much simpler to think of it as taking a list of variables.
(That's why I didn't understanding what he meant by flattening: Nothing can be flattened into variables.)
If parsing rules are different, so why not the behaviour in scalar context, too?
It's possible. The parser converts qw( ... ) into a list. It could convert my (...) into a list of simple my expressions. In fact, it does that already, but it does it specially so the code behaves as if my was a function.
But why would you want to make my() behave differently than foo(). That doesn't remove confusion or problems. It adds to them.
In reply to Re^7: why doesn't "my ($a,$b)" return a list?
by ikegami
in thread why doesn't "my ($a,$b)" return a list?
by LanX
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |