If you wanna take a look at the logic of the guess, take a look in toke.c and search for OP_MAPSTART. It's at line 4000 in the 5..8.5 source.
(I think) The logic for making the guess starts at the comment /* Is this a word before a => operator? */ a few lines below and extends for 100 lines or so. The comments, (if not the code :), make interesting reading as to just how complex this is.
Examine what is said, not who speaks.
"But you should never overestimate the ingenuity of the sceptics to come up with a counter-argument." -Myles Allen
"Think for yourself!" - Abigail
"Time is a poor substitute for thought"--theorbtwo
"Efficiency is intelligent laziness." -David Dunham
"Memory, processor, disk in that order on the hardware side. Algorithm, algorithm, algorithm on the code side." - tachyon
| [reply] [d/l] [select] |
That appears to be deciding how to interpret a bareword, not a '{'. I quickly looked but didn't find the code for guessing at the meaning of a '{', though.
Actually, I'd like to see merlyn download the source from one of those 150 locations and show us how easy it is to find and interpret this code. (:
| [reply] |
# toke.c:3207 (5.8.5)
/* This hack serves to disambiguate a pair of curlies
* as being a block or an anon hash. Normally, expectation
* determines that, but in cases where we're not in a
* position to expect anything in particular (like inside
* eval"") we have to resolve the ambiguity. This code
* covers the case where the first term in the curlies is a
* quoted string. Most other cases need to be explicitly
* disambiguated by prepending a `+' before the opening
* curly in order to force resolution as an anon hash.
*
* XXX should probably propagate the outer expectation
* into eval"" to rely less on this hack, but that could
* potentially break current behavior of eval"".
* GSAR 97-07-21
*/
Examine what is said, not who speaks.
"But you should never overestimate the ingenuity of the sceptics to come up with a counter-argument." -Myles Allen
"Think for yourself!" - Abigail
"Time is a poor substitute for thought"--theorbtwo
"Efficiency is intelligent laziness." -David Dunham
"Memory, processor, disk in that order on the hardware side. Algorithm, algorithm, algorithm on the code side." - tachyon
| [reply] [d/l] |
Those should both be ambiguous, as well, at least to my mind
What part of
there's some "guessing" code to deal with the ambiguity
did you miss reading? if you mean "what is the actual rules of the guessing?", well the Perl source code is available for download in about 150 CPAN locations, at least.
| [reply] |