#!./perl BEGIN { chdir 't' if -d 't'; require "./test.pl"; } plan(13); @a = (1,2,3,4,5,6,7,8,9,10,11,12); @b = (); while ($_ = shift(@a)) { if ($x = /4/../8/) { $z = $x; push @b, $x + 0; } $y .= /1/../2/; } is(join("*", @b), "1*2*3*4*5"); is($z, '5E0'); is($y, '12E0123E0'); @a = ('a','b','c','d','e','f','g'); { local $.; open(of,'harness') or die "Can't open harness: $!"; while () { (3 .. 5) && ($foo .= $_); } $x = ($foo =~ y/\n/\n/); is($x, 3); $x = 3.14; ok(($x...$x) eq "1"); { # coredump reported in bug 20001018.008 readline(UNKNOWN); $. = 1; $x = 1..10; ok(1); } } ok(!defined $.); use warnings; my $warn=''; $SIG{__WARN__} = sub { $warn .= join '', @_ }; ok(scalar(0..2)); like($warn, qr/uninitialized/); $warn = ''; $x = "foo".."bar"; ok((() = ($warn =~ /isn't numeric/g)) == 2); $warn = ''; $. = 15; ok(scalar(15..0)); push @_, \scalar(0..0) for 1,2; isnt $_[0], $_[1], '\scalar($a..$b) gives a different scalar each time'; # This evil little example from ticket #122829 abused the fact that each # recursion level maintained its own flip-flip state. The following com- # ment describes how it *used* to work. # This routine maintains multiple flip-flop states, each with its own # numeric ID, starting from 1. Pass the ID as the argument. sub f { my $depth = shift() - 1; return f($depth) if $depth; return /3/../5/; } { my $accumulator; for(1..20) { if (f(1)) { my $outer = $_; for(1..10){ $accumulator .= "$outer $_\n" if f(2); } } } is $accumulator, <