1use warnings; 2use strict; 3 4use Test::More tests => 14; 5 6BEGIN { $^H |= 0x20000; } 7 8my $t; 9 10$t = ""; 11eval q{ 12 use XS::APItest qw(looprest); 13 do { 14 $t .= "a"; 15 looprest 16 $t .= "b"; 17 last unless length($t) < 5; 18 $t .= "c"; 19 }; 20 $t .= "d"; 21}; 22is $@, ""; 23is $t, "abcbcbd"; 24 25$t = ""; 26eval q{ 27 use XS::APItest qw(looprest); 28 $t .= "a"; 29 looprest 30 $t .= "b"; 31 last unless length($t) < 5; 32 $t .= "c"; 33}; 34is $@, ""; 35is $t, "abcbcb"; 36 37$t = ""; 38eval q[ 39 use XS::APItest qw(looprest); 40 do { 41 $t .= "a"; 42 looprest 43 $t .= "b"; 44 last unless length($t) < 5; 45 $t .= "c"; 46]; 47isnt $@, ""; 48is $t, ""; 49 50$t = ""; 51eval q[ 52 use XS::APItest qw(looprest); 53 $t .= "a"; 54 looprest 55 $t .= "b"; 56 last unless length($t) < 5; 57 $t .= "c"; 58 }; 59]; 60isnt $@, ""; 61is $t, ""; 62 63$t = ""; 64eval q{ 65 use XS::APItest qw(looprest); 66 my $x = "a"; 67 $t .= $x; 68 do { 69 no warnings "shadow"; 70 $t .= $x; 71 my $x = "b"; 72 $t .= $x; 73 looprest 74 $t .= $x; 75 my $x = "c"; 76 $t .= $x; 77 last unless length($t) < 7; 78 $t .= $x; 79 my $x = "d"; 80 $t .= $x; 81 }; 82 $t .= $x; 83}; 84is $@, ""; 85is $t, "aabbccdbca"; 86 87$t = ""; 88eval q{ 89 use XS::APItest qw(looprest); 90 do { 91 { $t .= "a"; } 92 looprest 93 { $t .= "b"; } 94 last unless length($t) < 5; 95 { $t .= "c"; } 96 }; 97 $t .= "d"; 98}; 99is $@, ""; 100is $t, "abcbcbd"; 101 102$t = ""; 103eval q{ 104 use XS::APItest qw(looprest); 105 { $t .= "a"; } 106 looprest 107 { $t .= "b"; } 108 last unless length($t) < 5; 109 { $t .= "c"; } 110}; 111is $@, ""; 112is $t, "abcbcb"; 113 1141; 115