Commit | Line | Data |
---|---|---|
8d063cd8 LW |
1 | #!./perl |
2 | ||
4b70616d | 3 | print "1..118\n"; |
8d063cd8 LW |
4 | |
5 | for ($i = 0; $i <= 10; $i++) { | |
6 | $x[$i] = $i; | |
7 | } | |
8 | $y = $x[10]; | |
9 | print "#1 :$y: eq :10:\n"; | |
10 | $y = join(' ', @x); | |
11 | print "#1 :$y: eq :0 1 2 3 4 5 6 7 8 9 10:\n"; | |
12 | if (join(' ', @x) eq '0 1 2 3 4 5 6 7 8 9 10') { | |
13 | print "ok 1\n"; | |
14 | } else { | |
15 | print "not ok 1\n"; | |
16 | } | |
17 | ||
18 | $i = $c = 0; | |
19 | for (;;) { | |
20 | $c++; | |
21 | last if $i++ > 10; | |
22 | } | |
23 | if ($c == 12) {print "ok 2\n";} else {print "not ok 2\n";} | |
378cc40b LW |
24 | |
25 | $foo = 3210; | |
26 | @ary = (1,2,3,4,5); | |
27 | foreach $foo (@ary) { | |
28 | $foo *= 2; | |
29 | } | |
30 | if (join('',@ary) eq '246810') {print "ok 3\n";} else {print "not ok 3\n";} | |
31 | ||
32 | for (@ary) { | |
33 | s/(.*)/ok $1\n/; | |
34 | } | |
35 | ||
36 | print $ary[1]; | |
37 | ||
38 | # test for internal scratch array generation | |
39 | # this also tests that $foo was restored to 3210 after test 3 | |
40 | for (split(' ','a b c d e')) { | |
41 | $foo .= $_; | |
42 | } | |
a687059c | 43 | if ($foo eq '3210abcde') {print "ok 5\n";} else {print "not ok 5 $foo\n";} |
378cc40b LW |
44 | |
45 | foreach $foo (("ok 6\n","ok 7\n")) { | |
46 | print $foo; | |
47 | } | |
8bb77e1d GS |
48 | |
49 | sub foo { | |
50 | for $i (1..5) { | |
51 | return $i if $_[0] == $i; | |
52 | } | |
53 | } | |
54 | ||
55 | print foo(1) == 1 ? "ok" : "not ok", " 8\n"; | |
56 | print foo(2) == 2 ? "ok" : "not ok", " 9\n"; | |
57 | print foo(5) == 5 ? "ok" : "not ok", " 10\n"; | |
4bfc3f4d JH |
58 | |
59 | sub bar { | |
60 | return (1, 2, 4); | |
61 | } | |
62 | ||
63 | $a = 0; | |
64 | foreach $b (bar()) { | |
65 | $a += $b; | |
66 | } | |
67 | print $a == 7 ? "ok" : "not ok", " 11\n"; | |
68 | ||
f3fd7796 SR |
69 | $loop_count = 0; |
70 | for ("-3" .. "0") { | |
71 | $loop_count++; | |
72 | } | |
73 | print $loop_count == 4 ? "ok" : "not ok", " 12\n"; | |
cccede53 DM |
74 | |
75 | # modifying arrays in loops is a no-no | |
76 | @a = (3,4); | |
77 | eval { @a = () for (1,2,@a) }; | |
78 | print $@ =~ /Use of freed value in iteration/ ? "ok" : "not ok", " 13\n"; | |
dc09a129 DM |
79 | |
80 | # [perl #30061] double destory when same iterator variable (eg $_) used in | |
81 | # DESTROY as used in for loop that triggered the destroy | |
82 | ||
83 | { | |
84 | ||
85 | my $x = 0; | |
86 | sub X::DESTROY { | |
87 | my $o = shift; | |
88 | $x++; | |
89 | 1 for (1); | |
90 | } | |
91 | ||
92 | my %h; | |
93 | $h{foo} = bless [], 'X'; | |
94 | delete $h{foo} for $h{foo}, 1; | |
95 | print $x == 1 ? "ok" : "not ok", " 14 - double destroy, x=$x\n"; | |
96 | } | |
97 | ||
4d46db71 NC |
98 | # A lot of tests to check that reversed for works. |
99 | my $test = 14; | |
100 | sub is { | |
101 | my ($got, $expected, $name) = @_; | |
102 | ++$test; | |
103 | if ($got eq $expected) { | |
104 | print "ok $test # $name\n"; | |
105 | return 1; | |
106 | } | |
107 | print "not ok $test # $name\n"; | |
108 | print "# got '$got', expected '$expected'\n"; | |
109 | return 0; | |
110 | } | |
111 | ||
112 | @array = ('A', 'B', 'C'); | |
113 | for (@array) { | |
114 | $r .= $_; | |
115 | } | |
116 | is ($r, 'ABC', 'Forwards for array'); | |
117 | $r = ''; | |
118 | for (1,2,3) { | |
119 | $r .= $_; | |
120 | } | |
121 | is ($r, '123', 'Forwards for list'); | |
122 | $r = ''; | |
123 | for (map {$_} @array) { | |
124 | $r .= $_; | |
125 | } | |
126 | is ($r, 'ABC', 'Forwards for array via map'); | |
127 | $r = ''; | |
128 | for (map {$_} 1,2,3) { | |
129 | $r .= $_; | |
130 | } | |
131 | is ($r, '123', 'Forwards for list via map'); | |
4b70616d A |
132 | $r = ''; |
133 | for (1 .. 3) { | |
134 | $r .= $_; | |
135 | } | |
136 | is ($r, '123', 'Forwards for list via ..'); | |
137 | $r = ''; | |
138 | for ('A' .. 'C') { | |
139 | $r .= $_; | |
140 | } | |
141 | is ($r, 'ABC', 'Forwards for list via ..'); | |
4d46db71 NC |
142 | |
143 | $r = ''; | |
144 | for (reverse @array) { | |
145 | $r .= $_; | |
146 | } | |
147 | is ($r, 'CBA', 'Reverse for array'); | |
148 | $r = ''; | |
149 | for (reverse 1,2,3) { | |
150 | $r .= $_; | |
151 | } | |
152 | is ($r, '321', 'Reverse for list'); | |
153 | $r = ''; | |
154 | for (reverse map {$_} @array) { | |
155 | $r .= $_; | |
156 | } | |
157 | is ($r, 'CBA', 'Reverse for array via map'); | |
158 | $r = ''; | |
159 | for (reverse map {$_} 1,2,3) { | |
160 | $r .= $_; | |
161 | } | |
162 | is ($r, '321', 'Reverse for list via map'); | |
4b70616d A |
163 | $r = ''; |
164 | for (reverse 1 .. 3) { | |
165 | $r .= $_; | |
166 | } | |
167 | is ($r, '321', 'Reverse for list via ..'); | |
168 | $r = ''; | |
169 | for (reverse 'A' .. 'C') { | |
170 | $r .= $_; | |
171 | } | |
9135cc1c | 172 | is ($r, 'CBA', 'Reverse for list via ..'); |
4d46db71 NC |
173 | |
174 | $r = ''; | |
175 | for my $i (@array) { | |
176 | $r .= $i; | |
177 | } | |
178 | is ($r, 'ABC', 'Forwards for array with var'); | |
179 | $r = ''; | |
180 | for my $i (1,2,3) { | |
181 | $r .= $i; | |
182 | } | |
183 | is ($r, '123', 'Forwards for list with var'); | |
184 | $r = ''; | |
185 | for my $i (map {$_} @array) { | |
186 | $r .= $i; | |
187 | } | |
188 | is ($r, 'ABC', 'Forwards for array via map with var'); | |
189 | $r = ''; | |
190 | for my $i (map {$_} 1,2,3) { | |
191 | $r .= $i; | |
192 | } | |
193 | is ($r, '123', 'Forwards for list via map with var'); | |
4b70616d A |
194 | $r = ''; |
195 | for my $i (1 .. 3) { | |
196 | $r .= $i; | |
197 | } | |
198 | is ($r, '123', 'Forwards for list via .. with var'); | |
199 | $r = ''; | |
200 | for my $i ('A' .. 'C') { | |
201 | $r .= $i; | |
202 | } | |
203 | is ($r, 'ABC', 'Forwards for list via .. with var'); | |
4d46db71 NC |
204 | |
205 | $r = ''; | |
206 | for my $i (reverse @array) { | |
207 | $r .= $i; | |
208 | } | |
209 | is ($r, 'CBA', 'Reverse for array with var'); | |
210 | $r = ''; | |
211 | for my $i (reverse 1,2,3) { | |
212 | $r .= $i; | |
213 | } | |
214 | is ($r, '321', 'Reverse for list with var'); | |
215 | $r = ''; | |
216 | for my $i (reverse map {$_} @array) { | |
217 | $r .= $i; | |
218 | } | |
219 | is ($r, 'CBA', 'Reverse for array via map with var'); | |
220 | $r = ''; | |
221 | for my $i (reverse map {$_} 1,2,3) { | |
222 | $r .= $i; | |
223 | } | |
224 | is ($r, '321', 'Reverse for list via map with var'); | |
4b70616d A |
225 | $r = ''; |
226 | for my $i (reverse 1 .. 3) { | |
227 | $r .= $i; | |
228 | } | |
229 | is ($r, '321', 'Reverse for list via .. with var'); | |
230 | $r = ''; | |
231 | for my $i (reverse 'A' .. 'C') { | |
232 | $r .= $i; | |
233 | } | |
234 | is ($r, 'CBA', 'Reverse for list via .. with var'); | |
4d46db71 | 235 | |
4ef67d78 NC |
236 | # For some reason the generate optree is different when $_ is implicit. |
237 | $r = ''; | |
238 | for $_ (@array) { | |
239 | $r .= $_; | |
240 | } | |
241 | is ($r, 'ABC', 'Forwards for array with explicit $_'); | |
242 | $r = ''; | |
243 | for $_ (1,2,3) { | |
244 | $r .= $_; | |
245 | } | |
246 | is ($r, '123', 'Forwards for list with explicit $_'); | |
247 | $r = ''; | |
248 | for $_ (map {$_} @array) { | |
249 | $r .= $_; | |
250 | } | |
251 | is ($r, 'ABC', 'Forwards for array via map with explicit $_'); | |
252 | $r = ''; | |
253 | for $_ (map {$_} 1,2,3) { | |
254 | $r .= $_; | |
255 | } | |
256 | is ($r, '123', 'Forwards for list via map with explicit $_'); | |
4b70616d A |
257 | $r = ''; |
258 | for $_ (1 .. 3) { | |
259 | $r .= $_; | |
260 | } | |
261 | is ($r, '123', 'Forwards for list via .. with var with explicit $_'); | |
262 | $r = ''; | |
263 | for $_ ('A' .. 'C') { | |
264 | $r .= $_; | |
265 | } | |
266 | is ($r, 'ABC', 'Forwards for list via .. with var with explicit $_'); | |
4ef67d78 NC |
267 | |
268 | $r = ''; | |
269 | for $_ (reverse @array) { | |
270 | $r .= $_; | |
271 | } | |
272 | is ($r, 'CBA', 'Reverse for array with explicit $_'); | |
273 | $r = ''; | |
274 | for $_ (reverse 1,2,3) { | |
275 | $r .= $_; | |
276 | } | |
277 | is ($r, '321', 'Reverse for list with explicit $_'); | |
278 | $r = ''; | |
279 | for $_ (reverse map {$_} @array) { | |
280 | $r .= $_; | |
281 | } | |
282 | is ($r, 'CBA', 'Reverse for array via map with explicit $_'); | |
283 | $r = ''; | |
284 | for $_ (reverse map {$_} 1,2,3) { | |
285 | $r .= $_; | |
286 | } | |
287 | is ($r, '321', 'Reverse for list via map with explicit $_'); | |
4b70616d A |
288 | $r = ''; |
289 | for $_ (reverse 1 .. 3) { | |
290 | $r .= $_; | |
291 | } | |
292 | is ($r, '321', 'Reverse for list via .. with var with explicit $_'); | |
293 | $r = ''; | |
294 | for $_ (reverse 'A' .. 'C') { | |
295 | $r .= $_; | |
296 | } | |
297 | is ($r, 'CBA', 'Reverse for list via .. with var with explicit $_'); | |
4d46db71 NC |
298 | |
299 | # I don't think that my is that different from our in the optree. But test a | |
300 | # few: | |
301 | $r = ''; | |
302 | for our $i (reverse @array) { | |
303 | $r .= $i; | |
304 | } | |
305 | is ($r, 'CBA', 'Reverse for array with our var'); | |
306 | $r = ''; | |
307 | for our $i (reverse 1,2,3) { | |
308 | $r .= $i; | |
309 | } | |
310 | is ($r, '321', 'Reverse for list with our var'); | |
311 | $r = ''; | |
312 | for our $i (reverse map {$_} @array) { | |
313 | $r .= $i; | |
314 | } | |
315 | is ($r, 'CBA', 'Reverse for array via map with our var'); | |
316 | $r = ''; | |
317 | for our $i (reverse map {$_} 1,2,3) { | |
318 | $r .= $i; | |
319 | } | |
320 | is ($r, '321', 'Reverse for list via map with our var'); | |
4b70616d A |
321 | $r = ''; |
322 | for our $i (reverse 1 .. 3) { | |
323 | $r .= $i; | |
324 | } | |
325 | is ($r, '321', 'Reverse for list via .. with our var'); | |
326 | $r = ''; | |
327 | for our $i (reverse 'A' .. 'C') { | |
328 | $r .= $i; | |
329 | } | |
330 | is ($r, 'CBA', 'Reverse for list via .. with our var'); | |
4d46db71 NC |
331 | |
332 | ||
333 | $r = ''; | |
334 | for (1, reverse @array) { | |
335 | $r .= $_; | |
336 | } | |
337 | is ($r, '1CBA', 'Reverse for array with leading value'); | |
338 | $r = ''; | |
339 | for ('A', reverse 1,2,3) { | |
340 | $r .= $_; | |
341 | } | |
342 | is ($r, 'A321', 'Reverse for list with leading value'); | |
343 | $r = ''; | |
344 | for (1, reverse map {$_} @array) { | |
345 | $r .= $_; | |
346 | } | |
347 | is ($r, '1CBA', 'Reverse for array via map with leading value'); | |
348 | $r = ''; | |
349 | for ('A', reverse map {$_} 1,2,3) { | |
350 | $r .= $_; | |
351 | } | |
352 | is ($r, 'A321', 'Reverse for list via map with leading value'); | |
4b70616d A |
353 | $r = ''; |
354 | for ('A', reverse 1 .. 3) { | |
355 | $r .= $_; | |
356 | } | |
357 | is ($r, 'A321', 'Reverse for list via .. with leading value'); | |
358 | $r = ''; | |
359 | for (1, reverse 'A' .. 'C') { | |
360 | $r .= $_; | |
361 | } | |
362 | is ($r, '1CBA', 'Reverse for list via .. with leading value'); | |
4d46db71 NC |
363 | |
364 | $r = ''; | |
365 | for (reverse (@array), 1) { | |
366 | $r .= $_; | |
367 | } | |
368 | is ($r, 'CBA1', 'Reverse for array with trailing value'); | |
369 | $r = ''; | |
370 | for (reverse (1,2,3), 'A') { | |
371 | $r .= $_; | |
372 | } | |
373 | is ($r, '321A', 'Reverse for list with trailing value'); | |
374 | $r = ''; | |
375 | for (reverse (map {$_} @array), 1) { | |
376 | $r .= $_; | |
377 | } | |
378 | is ($r, 'CBA1', 'Reverse for array via map with trailing value'); | |
379 | $r = ''; | |
380 | for (reverse (map {$_} 1,2,3), 'A') { | |
381 | $r .= $_; | |
382 | } | |
383 | is ($r, '321A', 'Reverse for list via map with trailing value'); | |
4b70616d A |
384 | $r = ''; |
385 | for (reverse (1 .. 3), 'A') { | |
386 | $r .= $_; | |
387 | } | |
388 | is ($r, '321A', 'Reverse for list via .. with trailing value'); | |
389 | $r = ''; | |
390 | for (reverse ('A' .. 'C'), 1) { | |
391 | $r .= $_; | |
392 | } | |
393 | is ($r, 'CBA1', 'Reverse for list via .. with trailing value'); | |
4d46db71 NC |
394 | |
395 | ||
396 | $r = ''; | |
4ef67d78 NC |
397 | for $_ (1, reverse @array) { |
398 | $r .= $_; | |
399 | } | |
400 | is ($r, '1CBA', 'Reverse for array with leading value with explicit $_'); | |
401 | $r = ''; | |
402 | for $_ ('A', reverse 1,2,3) { | |
403 | $r .= $_; | |
404 | } | |
405 | is ($r, 'A321', 'Reverse for list with leading value with explicit $_'); | |
406 | $r = ''; | |
407 | for $_ (1, reverse map {$_} @array) { | |
408 | $r .= $_; | |
409 | } | |
410 | is ($r, '1CBA', | |
411 | 'Reverse for array via map with leading value with explicit $_'); | |
412 | $r = ''; | |
413 | for $_ ('A', reverse map {$_} 1,2,3) { | |
414 | $r .= $_; | |
415 | } | |
416 | is ($r, 'A321', 'Reverse for list via map with leading value with explicit $_'); | |
4b70616d A |
417 | $r = ''; |
418 | for $_ ('A', reverse 1 .. 3) { | |
419 | $r .= $_; | |
420 | } | |
421 | is ($r, 'A321', 'Reverse for list via .. with leading value with explicit $_'); | |
422 | $r = ''; | |
423 | for $_ (1, reverse 'A' .. 'C') { | |
424 | $r .= $_; | |
425 | } | |
426 | is ($r, '1CBA', 'Reverse for list via .. with leading value with explicit $_'); | |
4ef67d78 NC |
427 | |
428 | $r = ''; | |
429 | for $_ (reverse (@array), 1) { | |
430 | $r .= $_; | |
431 | } | |
432 | is ($r, 'CBA1', 'Reverse for array with trailing value with explicit $_'); | |
433 | $r = ''; | |
434 | for $_ (reverse (1,2,3), 'A') { | |
435 | $r .= $_; | |
436 | } | |
437 | is ($r, '321A', 'Reverse for list with trailing value with explicit $_'); | |
438 | $r = ''; | |
439 | for $_ (reverse (map {$_} @array), 1) { | |
440 | $r .= $_; | |
441 | } | |
442 | is ($r, 'CBA1', | |
443 | 'Reverse for array via map with trailing value with explicit $_'); | |
444 | $r = ''; | |
445 | for $_ (reverse (map {$_} 1,2,3), 'A') { | |
446 | $r .= $_; | |
447 | } | |
448 | is ($r, '321A', | |
449 | 'Reverse for list via map with trailing value with explicit $_'); | |
4b70616d A |
450 | $r = ''; |
451 | for $_ (reverse (1 .. 3), 'A') { | |
452 | $r .= $_; | |
453 | } | |
454 | is ($r, '321A', 'Reverse for list via .. with trailing value with explicit $_'); | |
455 | $r = ''; | |
456 | for $_ (reverse ('A' .. 'C'), 1) { | |
457 | $r .= $_; | |
458 | } | |
459 | is ($r, 'CBA1', 'Reverse for list via .. with trailing value with explicit $_'); | |
4ef67d78 NC |
460 | |
461 | $r = ''; | |
4d46db71 NC |
462 | for my $i (1, reverse @array) { |
463 | $r .= $i; | |
464 | } | |
465 | is ($r, '1CBA', 'Reverse for array with leading value and var'); | |
466 | $r = ''; | |
467 | for my $i ('A', reverse 1,2,3) { | |
468 | $r .= $i; | |
469 | } | |
470 | is ($r, 'A321', 'Reverse for list with leading value and var'); | |
471 | $r = ''; | |
472 | for my $i (1, reverse map {$_} @array) { | |
473 | $r .= $i; | |
474 | } | |
475 | is ($r, '1CBA', 'Reverse for array via map with leading value and var'); | |
476 | $r = ''; | |
477 | for my $i ('A', reverse map {$_} 1,2,3) { | |
478 | $r .= $i; | |
479 | } | |
480 | is ($r, 'A321', 'Reverse for list via map with leading value and var'); | |
4b70616d A |
481 | $r = ''; |
482 | for my $i ('A', reverse 1 .. 3) { | |
483 | $r .= $i; | |
484 | } | |
485 | is ($r, 'A321', 'Reverse for list via .. with leading value and var'); | |
486 | $r = ''; | |
487 | for my $i (1, reverse 'A' .. 'C') { | |
488 | $r .= $i; | |
489 | } | |
490 | is ($r, '1CBA', 'Reverse for list via .. with leading value and var'); | |
4d46db71 NC |
491 | |
492 | $r = ''; | |
493 | for my $i (reverse (@array), 1) { | |
494 | $r .= $i; | |
495 | } | |
496 | is ($r, 'CBA1', 'Reverse for array with trailing value and var'); | |
497 | $r = ''; | |
498 | for my $i (reverse (1,2,3), 'A') { | |
499 | $r .= $i; | |
500 | } | |
501 | is ($r, '321A', 'Reverse for list with trailing value and var'); | |
502 | $r = ''; | |
503 | for my $i (reverse (map {$_} @array), 1) { | |
504 | $r .= $i; | |
505 | } | |
506 | is ($r, 'CBA1', 'Reverse for array via map with trailing value and var'); | |
507 | $r = ''; | |
508 | for my $i (reverse (map {$_} 1,2,3), 'A') { | |
509 | $r .= $i; | |
510 | } | |
511 | is ($r, '321A', 'Reverse for list via map with trailing value and var'); | |
4b70616d A |
512 | $r = ''; |
513 | for my $i (reverse (1 .. 3), 'A') { | |
514 | $r .= $i; | |
515 | } | |
516 | is ($r, '321A', 'Reverse for list via .. with trailing value and var'); | |
517 | $r = ''; | |
518 | for my $i (reverse ('A' .. 'C'), 1) { | |
519 | $r .= $i; | |
520 | } | |
521 | is ($r, 'CBA1', 'Reverse for list via .. with trailing value and var'); | |
4d46db71 NC |
522 | |
523 | ||
524 | $r = ''; | |
525 | for (reverse 1, @array) { | |
526 | $r .= $_; | |
527 | } | |
528 | is ($r, 'CBA1', 'Reverse for value and array'); | |
529 | $r = ''; | |
530 | for (reverse map {$_} 1, @array) { | |
531 | $r .= $_; | |
532 | } | |
533 | is ($r, 'CBA1', 'Reverse for value and array via map'); | |
4b70616d A |
534 | $r = ''; |
535 | for (reverse 1 .. 3, @array) { | |
536 | $r .= $_; | |
537 | } | |
538 | is ($r, 'CBA321', 'Reverse for .. and array'); | |
539 | $r = ''; | |
540 | for (reverse 'X' .. 'Z', @array) { | |
541 | $r .= $_; | |
542 | } | |
543 | is ($r, 'CBAZYX', 'Reverse for .. and array'); | |
544 | $r = ''; | |
545 | for (reverse map {$_} 1 .. 3, @array) { | |
546 | $r .= $_; | |
547 | } | |
548 | is ($r, 'CBA321', 'Reverse for .. and array via map'); | |
549 | $r = ''; | |
550 | for (reverse map {$_} 'X' .. 'Z', @array) { | |
551 | $r .= $_; | |
552 | } | |
553 | is ($r, 'CBAZYX', 'Reverse for .. and array via map'); | |
4d46db71 NC |
554 | |
555 | $r = ''; | |
556 | for (reverse (@array, 1)) { | |
557 | $r .= $_; | |
558 | } | |
559 | is ($r, '1CBA', 'Reverse for array and value'); | |
560 | $r = ''; | |
561 | for (reverse (map {$_} @array, 1)) { | |
562 | $r .= $_; | |
563 | } | |
564 | is ($r, '1CBA', 'Reverse for array and value via map'); | |
565 | ||
4ef67d78 NC |
566 | $r = ''; |
567 | for $_ (reverse 1, @array) { | |
568 | $r .= $_; | |
569 | } | |
570 | is ($r, 'CBA1', 'Reverse for value and array with explicit $_'); | |
571 | $r = ''; | |
572 | for $_ (reverse map {$_} 1, @array) { | |
573 | $r .= $_; | |
574 | } | |
575 | is ($r, 'CBA1', 'Reverse for value and array via map with explicit $_'); | |
4b70616d A |
576 | $r = ''; |
577 | for $_ (reverse 1 .. 3, @array) { | |
578 | $r .= $_; | |
579 | } | |
580 | is ($r, 'CBA321', 'Reverse for .. and array with explicit $_'); | |
581 | $r = ''; | |
582 | for $_ (reverse 'X' .. 'Z', @array) { | |
583 | $r .= $_; | |
584 | } | |
585 | is ($r, 'CBAZYX', 'Reverse for .. and array with explicit $_'); | |
586 | $r = ''; | |
587 | for $_ (reverse map {$_} 1 .. 3, @array) { | |
588 | $r .= $_; | |
589 | } | |
590 | is ($r, 'CBA321', 'Reverse for .. and array via map with explicit $_'); | |
591 | $r = ''; | |
592 | for $_ (reverse map {$_} 'X' .. 'Z', @array) { | |
593 | $r .= $_; | |
594 | } | |
595 | is ($r, 'CBAZYX', 'Reverse for .. and array via map with explicit $_'); | |
4ef67d78 NC |
596 | |
597 | $r = ''; | |
598 | for $_ (reverse (@array, 1)) { | |
599 | $r .= $_; | |
600 | } | |
601 | is ($r, '1CBA', 'Reverse for array and value with explicit $_'); | |
602 | $r = ''; | |
603 | for $_ (reverse (map {$_} @array, 1)) { | |
604 | $r .= $_; | |
605 | } | |
606 | is ($r, '1CBA', 'Reverse for array and value via map with explicit $_'); | |
607 | ||
4d46db71 NC |
608 | |
609 | $r = ''; | |
610 | for my $i (reverse 1, @array) { | |
611 | $r .= $i; | |
612 | } | |
613 | is ($r, 'CBA1', 'Reverse for value and array with var'); | |
614 | $r = ''; | |
615 | for my $i (reverse map {$_} 1, @array) { | |
616 | $r .= $i; | |
617 | } | |
618 | is ($r, 'CBA1', 'Reverse for value and array via map with var'); | |
4b70616d A |
619 | $r = ''; |
620 | for my $i (reverse 1 .. 3, @array) { | |
621 | $r .= $i; | |
622 | } | |
623 | is ($r, 'CBA321', 'Reverse for .. and array with var'); | |
624 | $r = ''; | |
625 | for my $i (reverse 'X' .. 'Z', @array) { | |
626 | $r .= $i; | |
627 | } | |
628 | is ($r, 'CBAZYX', 'Reverse for .. and array with var'); | |
629 | $r = ''; | |
630 | for my $i (reverse map {$_} 1 .. 3, @array) { | |
631 | $r .= $i; | |
632 | } | |
633 | is ($r, 'CBA321', 'Reverse for .. and array via map with var'); | |
634 | $r = ''; | |
635 | for my $i (reverse map {$_} 'X' .. 'Z', @array) { | |
636 | $r .= $i; | |
637 | } | |
638 | is ($r, 'CBAZYX', 'Reverse for .. and array via map with var'); | |
4d46db71 NC |
639 | |
640 | $r = ''; | |
641 | for my $i (reverse (@array, 1)) { | |
642 | $r .= $i; | |
643 | } | |
644 | is ($r, '1CBA', 'Reverse for array and value with var'); | |
645 | $r = ''; | |
646 | for my $i (reverse (map {$_} @array, 1)) { | |
647 | $r .= $i; | |
648 | } | |
649 | is ($r, '1CBA', 'Reverse for array and value via map with var'); | |
18398057 SP |
650 | |
651 | TODO: { | |
652 | $test++; | |
5a7dac4e SP |
653 | local $TODO = "RT #1085: what should be output of perl -we 'print do { foreach (1, 2) { 1; } }'"; |
654 | if (do {17; foreach (1, 2) { 1; } } != 17) { | |
655 | print "not "; | |
656 | } | |
657 | print "ok $test # TODO $TODO\n"; | |
658 | } | |
659 | ||
660 | TODO: { | |
661 | $test++; | |
18398057 SP |
662 | no warnings 'reserved'; |
663 | local $TODO = "RT #2166: foreach spuriously autovivifies"; | |
664 | my %h; | |
665 | foreach (@h{a, b}) {} | |
666 | if(keys(%h)) { | |
667 | print "not "; | |
668 | } | |
669 | print "ok $test # TODO $TODO\n"; | |
670 | } |