1*898184e3Ssthen#!./perl 2*898184e3Ssthen 3*898184e3Ssthenprint "1..7\n"; 4*898184e3Ssthen 5*898184e3Ssthen$main::result = ""; 6*898184e3Sstheneval q{ 7*898184e3Ssthen $main::result .= "a(".__PACKAGE__."/".eval("__PACKAGE__").")"; 8*898184e3Ssthen package Foo { 9*898184e3Ssthen $main::result .= "b(".__PACKAGE__."/".eval("__PACKAGE__").")"; 10*898184e3Ssthen package Bar::Baz { 11*898184e3Ssthen $main::result .= "c(".__PACKAGE__."/".eval("__PACKAGE__").")"; 12*898184e3Ssthen } 13*898184e3Ssthen $main::result .= "d(".__PACKAGE__."/".eval("__PACKAGE__").")"; 14*898184e3Ssthen } 15*898184e3Ssthen $main::result .= "e(".__PACKAGE__."/".eval("__PACKAGE__").")"; 16*898184e3Ssthen}; 17*898184e3Ssthenprint $main::result eq 18*898184e3Ssthen "a(main/main)b(Foo/Foo)c(Bar::Baz/Bar::Baz)d(Foo/Foo)e(main/main)" ? 19*898184e3Ssthen "ok 1\n" : "not ok 1\n"; 20*898184e3Ssthen 21*898184e3Ssthen$main::result = ""; 22*898184e3Sstheneval q{ 23*898184e3Ssthen $main::result .= "a($Foo::VERSION)"; 24*898184e3Ssthen $main::result .= "b($Bar::VERSION)"; 25*898184e3Ssthen package Foo 11 { ; } 26*898184e3Ssthen package Bar 22 { 27*898184e3Ssthen $main::result .= "c(".__PACKAGE__."/".eval("__PACKAGE__").")"; 28*898184e3Ssthen } 29*898184e3Ssthen}; 30*898184e3Ssthenprint $main::result eq "a(11)b(22)c(Bar/Bar)" ? "ok 2\n" : "not ok 2\n"; 31*898184e3Ssthen 32*898184e3Ssthen$main::result = ""; 33*898184e3Sstheneval q{ 34*898184e3Ssthen $main::result .= "a(".__PACKAGE__."/".eval("__PACKAGE__").")"; 35*898184e3Ssthen package Foo { } 36*898184e3Ssthen $main::result .= "b(".__PACKAGE__."/".eval("__PACKAGE__").")"; 37*898184e3Ssthen}; 38*898184e3Ssthenprint $main::result eq "a(main/main)b(main/main)" ? "ok 3\n" : "not ok 3\n"; 39*898184e3Ssthen 40*898184e3Sstheneval q[package Foo {]; 41*898184e3Ssthenprint $@ =~ /\AMissing right curly / ? "ok 4\n" : "not ok 4\n"; 42*898184e3Ssthen 43*898184e3Ssthen$main::result = ""; 44*898184e3Sstheneval q{ 45*898184e3Ssthen $main::result .= "a(".__LINE__.")"; 46*898184e3Ssthen package Foo { 47*898184e3Ssthen $main::result .= "b(".__LINE__.")"; 48*898184e3Ssthen package Bar::Baz { 49*898184e3Ssthen $main::result .= "c(".__LINE__.")"; 50*898184e3Ssthen } 51*898184e3Ssthen $main::result .= "d(".__LINE__.")"; 52*898184e3Ssthen } 53*898184e3Ssthen $main::result .= "e(".__LINE__.")"; 54*898184e3Ssthen package Quux { } 55*898184e3Ssthen $main::result .= "f(".__LINE__.")"; 56*898184e3Ssthen}; 57*898184e3Ssthenprint $main::result eq "a(2)b(4)c(6)d(8)e(10)f(12)" ? "ok 5\n" : "not ok 5\n"; 58*898184e3Ssthen 59*898184e3Ssthen$main::result = ""; 60*898184e3Ssthen$main::warning = ""; 61*898184e3Ssthen$SIG{__WARN__} = sub { $main::warning .= $_[0]; }; 62*898184e3Sstheneval q{ 63*898184e3Ssthen $main::result .= "a(".__PACKAGE__."/".eval("__PACKAGE__").")"; 64*898184e3Ssthen goto l0; 65*898184e3Ssthen $main::result .= "b(".__PACKAGE__."/".eval("__PACKAGE__").")"; 66*898184e3Ssthen package Foo { 67*898184e3Ssthen $main::result .= "c(".__PACKAGE__."/".eval("__PACKAGE__").")"; 68*898184e3Ssthen l0: 69*898184e3Ssthen $main::result .= "d(".__PACKAGE__."/".eval("__PACKAGE__").")"; 70*898184e3Ssthen goto l1; 71*898184e3Ssthen $main::result .= "e(".__PACKAGE__."/".eval("__PACKAGE__").")"; 72*898184e3Ssthen } 73*898184e3Ssthen $main::result .= "f(".__PACKAGE__."/".eval("__PACKAGE__").")"; 74*898184e3Ssthen l1: 75*898184e3Ssthen $main::result .= "g(".__PACKAGE__."/".eval("__PACKAGE__").")"; 76*898184e3Ssthen goto l2; 77*898184e3Ssthen $main::result .= "h(".__PACKAGE__."/".eval("__PACKAGE__").")"; 78*898184e3Ssthen package Bar { 79*898184e3Ssthen l2: 80*898184e3Ssthen $main::result .= "i(".__PACKAGE__."/".eval("__PACKAGE__").")"; 81*898184e3Ssthen } 82*898184e3Ssthen $main::result .= "j(".__PACKAGE__."/".eval("__PACKAGE__").")"; 83*898184e3Ssthen}; 84*898184e3Ssthenprint $main::result eq 85*898184e3Ssthen "a(main/main)d(Foo/Foo)g(main/main)i(Bar/Bar)j(main/main)" ? 86*898184e3Ssthen "ok 6\n" : "not ok 6\n"; 87*898184e3Ssthenprint $main::warning =~ /\A 88*898184e3Ssthen Use\ of\ "goto"\ [^\n]*\ line\ 3\.\n 89*898184e3Ssthen Use\ of\ "goto"\ [^\n]*\ line\ 15\.\n 90*898184e3Ssthen \z/x ? "ok 7\n" : "not ok 7\n"; 91*898184e3Ssthen 92*898184e3Ssthen1; 93