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

Reply via email to