In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/df3467db16fc4437950db94f0d3ad7ff8b2c9e46?hp=43eb98159eec9ba37935203e5bf9f3a4199380c5>
- Log ----------------------------------------------------------------- commit df3467db16fc4437950db94f0d3ad7ff8b2c9e46 Author: Ian Goodacre <[email protected]> Date: Sat Mar 14 19:04:12 2009 +1300 Return OPERATOR('[') for '[' without falling through to case '~', avoiding misinterpreting "[~" as an OP_SMARTMATCH. ----------------------------------------------------------------------- Summary of changes: t/base/lex.t | 10 +++++++++- toke.c | 5 ++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/t/base/lex.t b/t/base/lex.t index f45e56c..9892df5 100755 --- a/t/base/lex.t +++ b/t/base/lex.t @@ -1,6 +1,6 @@ #!./perl -print "1..56\n"; +print "1..57\n"; $x = 'x'; @@ -267,3 +267,11 @@ foo::::::bar; eval "\$x =\xE2foo"; if ($@ =~ /Unrecognized character \\xE2 in column 5/) { print "ok $test\n"; } else { print "not ok $test\n"; } $test++; + +# Is "[~" scanned correctly? +eval ' + my @a; + my $x = $a[~1] +'; +print "not " if($@); +print "ok 57\n"; diff --git a/toke.c b/toke.c index 3c3e0ad..8f5795a 100644 --- a/toke.c +++ b/toke.c @@ -4287,7 +4287,10 @@ Perl_yylex(pTHX) BOop(OP_BIT_XOR); case '[': PL_lex_brackets++; - /* FALL THROUGH */ + { + const char tmp = *s++; + OPERATOR(tmp); + } case '~': if (s[1] == '~' && (PL_expect == XOPERATOR || PL_expect == XTERMORDORDOR)) -- Perl5 Master Repository
