use warnings; use strict; use Test::More tests => 18; BEGIN { $^H |= 0x20000; } my $t; $t = ""; eval q{ use XS::APItest qw(scopelessblock); $t .= "a"; scopelessblock { $t .= "b"; } $t .= "c"; }; is $@, ""; is $t, "abc"; $t = ""; eval q{ use XS::APItest qw(scopelessblock); $t .= "a"; scopelessblock { my $t = "z"; $t .= "b"; } $t .= "c"; }; is $@, ""; is $t, "a"; $t = ""; eval q{ use XS::APItest qw(scopelessblock); my $f = 1.5; $t .= "a(".($f+$f).")"; scopelessblock { use integer; $t .= "b(".($f+$f).")"; } $t .= "c(".($f+$f).")"; }; is $@, ""; is $t, "a(3)b(2)c(2)"; $t = ""; eval q{ use XS::APItest qw(scopelessblock); our $z = "z"; $t .= "a$z"; scopelessblock { local $z = "y"; $t .= "b$z"; } $t .= "c$z"; }; is $@, ""; is $t, "azbycy"; $t = ""; eval q{ use XS::APItest qw(scopelessblock); $t .= "A"; do { $t .= "a"; scopelessblock { $t .= "b"; } $t .= "c"; }; $t .= "B"; }; is $@, ""; is $t, "AabcB"; $t = ""; eval q| use XS::APItest qw(scopelessblock); $t .= "a"; scopelessblock { $t .= "b"; ] $t .= "c"; |; isnt $@, ""; is $t, ""; $SIG{__WARN__} = sub { }; $t = ""; eval q| use XS::APItest qw(scopelessblock); $t .= "a"; scopelessblock { $t .= "b"; ) $t .= "c"; |; isnt $@, ""; is $t, ""; $t = ""; eval q{ use XS::APItest qw(scopelessblock); { $t .= "a"; } scopelessblock { { $t .= "b"; } } { $t .= "c"; } }; is $@, ""; is $t, "abc"; $t = ""; eval q{ use XS::APItest qw(scopelessblock); $t .= "A"; do { { $t .= "a"; } scopelessblock { { $t .= "b"; } } { $t .= "c"; } }; $t .= "B"; }; is $@, ""; is $t, "AabcB"; 1;