TERM(THING);
}
/* avoid v123abc() or $h{v1}, allow C<print v10;> */
- else if (!isALPHA(*start) && (PL_expect == XTERM || PL_expect == XREF)) {
+ else if (!isALPHA(*start) && (PL_expect == XTERM || PL_expect == XREF || PL_expect == XSTATE)) {
char c = *start;
GV *gv;
*start = '\0';
if (strEQ(d,"rindex")) return -KEY_rindex;
break;
case 7:
- if (strEQ(d,"require")) return -KEY_require;
+ if (strEQ(d,"require")) return KEY_require;
if (strEQ(d,"reverse")) return -KEY_reverse;
if (strEQ(d,"readdir")) return -KEY_readdir;
break;
lastub = s++;
}
- /* read off the first digit */
- if (isDIGIT(*s)) {
- if (d >= e)
- Perl_croak(aTHX_ number_too_long);
- *d++ = *s++;
- }
-
/* read digits of exponent */
while (isDIGIT(*s) || *s == '_') {
if (isDIGIT(*s)) {
if (d >= e)
Perl_croak(aTHX_ number_too_long);
- *d++ = *s;
+ *d++ = *s++;
}
else {
if (ckWARN(WARN_SYNTAX) &&
((lastub && s == lastub + 1) ||
- !isDIGIT(s[1])))
+ (!isDIGIT(s[1]) && s[1] != '_')))
Perl_warner(aTHX_ WARN_SYNTAX,
"Misplaced _ in number");
- lastub = s;
+ lastub = s++;
}
- s++;
}
}