diff options
author | Father Chrysostomos <sprout@cpan.org> | 2015-03-10 22:00:41 -0700 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2015-03-10 23:20:57 -0700 |
commit | 9d58dbc453a86c9cbb3a131adcd1559fe0445a08 (patch) | |
tree | 873e2f008cf58aa31ece614c003b49ccf3520472 /toke.c | |
parent | 0635704a987a9ec0c9983c4b01b19624fafe668a (diff) | |
download | perl-9d58dbc453a86c9cbb3a131adcd1559fe0445a08.tar.gz |
[perl #123963] "@<fullwidth digit>"
If an @ sign in a double-quoted string is not followed by a valid
identifier, then it is treated literally. Or at least that is how it
was intended to work.
The lexer was actually not self-consistent. It was treating non-ASCII
digits at valid identifiers in determining where the interpolation
started, but was not treating them as valid identifiers when actually
parsing the interpolated code. So this would result in syntax errors,
and even crashes in some cases.
Diffstat (limited to 'toke.c')
-rw-r--r-- | toke.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -3056,7 +3056,7 @@ S_scan_const(pTHX_ char *start) (@foo, @::foo, @'foo, @{foo}, @$foo, @+, @-) */ else if (*s == '@' && s[1]) { - if (isWORDCHAR_lazy_if(s+1,UTF)) + if (UTF ? isIDFIRST_utf8((U8*)s+1) : isWORDCHAR_A(s[1])) break; if (strchr(":'{$", s[1])) break; |