in reply to \ Operator in referencing
Why the distinction? Why are there two seperate behaviors?
Because the author of that feature thought it was a neat idea. Note that if your thinking on flattened lists were correct then \(@a,@b,@c) would be the same as map {\$_} @a,@b,@c which is the same as (\(@a),\(@b),\(@c)) (which would make this quirk of \(...) less interesting). But instead \(@a,@b,@c) is the same as (\@a,\@b,\@c). And \(@a,(@b),@c) is the same as (\@a,\(@b),\@c) which is the same as ( \@a, map(\$_,@b), \@c ).
What is happening that creates the difference in behavior?
The C code that was added to the perl.exe source code to implement \ specifically looks for parens and does something different when it sees them.
There is no general principle of Perl that explains this quirk of \(...). It is just specific to \ and that is just the way that it was implemented.
The one thing I don't like about it is that it is different from how anything else in Perl works (and so is surprising, at least when you first run into it). But that is a fairly minor problem and the fairly minor utility of the shortcut makes it an acceptable design, IMHO.
- tye
|
|---|