change#3744 should have made grep more like map instead of the
Gurusamy Sarathy [Wed, 26 Jan 2000 02:42:38 +0000 (02:42 +0000)]
other way around

p4raw-link: @3744 on //depot/perl: 4e4e412b11cee5b4d44ee0d29943215db93eb350

p4raw-id: //depot/perl@4897

t/op/grep.t
toke.c

index 45d0e25..3a7f8ad 100755 (executable)
@@ -4,7 +4,7 @@
 # grep() and map() tests
 #
 
-print "1..3\n";
+print "1..27\n";
 
 $test = 1;
 
@@ -29,3 +29,71 @@ sub ok {
    $test++;
 }
 
+{
+   print map({$_} ("ok $test\n"));
+   $test++;
+   print map
+            ({$_} ("ok $test\n"));
+   $test++;
+   print((map({a => $_}, ("ok $test\n")))[0]->{a});
+   $test++;
+   print((map
+            ({a=>$_},
+            ("ok $test\n")))[0]->{a});
+   $test++;
+   print map { $_ } ("ok $test\n");
+   $test++;
+   print map
+            { $_ } ("ok $test\n");
+   $test++;
+   print((map {a => $_}, ("ok $test\n"))[0]->{a});
+   $test++;
+   print((map
+            {a=>$_},
+            ("ok $test\n"))[0]->{a});
+   $test++;
+   my $x = "ok \xFF\xFF\n";
+   print map($_&$x,("ok $test\n"));
+   $test++;
+   print map
+            ($_ & $x, ("ok $test\n"));
+   $test++;
+   print map { $_ & $x } ("ok $test\n");
+   $test++;
+   print map
+             { $_&$x } ("ok $test\n");
+   $test++;
+
+   print grep({$_} ("ok $test\n"));
+   $test++;
+   print grep
+            ({$_} ("ok $test\n"));
+   $test++;
+   print grep({a => $_}->{a}, ("ok $test\n"));
+   $test++;
+   print grep
+            ({a => $_}->{a},
+            ("ok $test\n"));
+   $test++;
+   print grep { $_ } ("ok $test\n");
+   $test++;
+   print grep
+             { $_ } ("ok $test\n");
+   $test++;
+   print grep {a => $_}->{a}, ("ok $test\n");
+   $test++;
+   print grep
+            {a => $_}->{a},
+            ("ok $test\n");
+   $test++;
+   print grep($_&"X",("ok $test\n"));
+   $test++;
+   print grep
+            ($_&"X", ("ok $test\n"));
+   $test++;
+   print grep { $_ & "X" } ("ok $test\n");
+   $test++;
+   print grep
+             { $_ & "X" } ("ok $test\n");
+   $test++;
+}
diff --git a/toke.c b/toke.c
index db55a1e..6f28ee1 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -4084,7 +4084,7 @@ Perl_yylex(pTHX)
            Rop(OP_SGE);
 
        case KEY_grep:
-           LOP(OP_GREPSTART, *s == '(' ? XTERM : XREF);
+           LOP(OP_GREPSTART, XREF);
 
        case KEY_goto:
            s = force_word(s,WORD,TRUE,FALSE,FALSE);
@@ -4246,7 +4246,7 @@ Perl_yylex(pTHX)
            TERM(sublex_start());
 
        case KEY_map:
-           LOP(OP_MAPSTART, *s == '(' ? XTERM : XREF);
+           LOP(OP_MAPSTART, XREF);
 
        case KEY_mkdir:
            LOP(OP_MKDIR,XTERM);