There is no ambiguity, although one has to admit that the case may be confusing. But it's perfectly well documented.Eh, no... there is ambiguity as the syntax of this piece of code is ambiguous for the grammar.
Only, Perl has a well documented way to disambiguate this case.
Other ambiguities include code block versus anonymous hash, and the opening slash for regexes for optional function arguments:
map { $_ => length } @list # code block or hash?
rand /2 /m # division or regex?
Occasionally, in particular for the former example, Pelr makes an initial guess and guesses wrong, producing a syntax error further down in the parsing stream — too late to go back and try the other route. It requires a well known disambiguation trick to resolve the problem, early enough:
+{ $_ => length } # hashref { ; $_ => length } # code block
In reply to Re^2: Hidden Secrets of PERL
by bart
in thread Hidden Secrets of PERL
by perl_lover
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |