📄 goto.t
字号:
#!./perl# "This IS structured code. It's just randomly structured."print "1..16\n";while ($?) { $foo = 1; label1: $foo = 2; goto label2;} continue { $foo = 0; goto label4; label3: $foo = 4; goto label4;}goto label1;$foo = 3;label2:print "#1\t:$foo: == 2\n";if ($foo == 2) {print "ok 1\n";} else {print "not ok 1\n";}goto label3;label4:print "#2\t:$foo: == 4\n";if ($foo == 4) {print "ok 2\n";} else {print "not ok 2\n";}$PERL = ($^O eq 'MSWin32') ? '.\perl' : './perl';$CMD = qq[$PERL -e "goto foo;" 2>&1 ];$x = `$CMD`;if ($x =~ /label/) {print "ok 3\n";} else {print "not ok 3\n";}sub foo { goto bar; print "not ok 4\n"; return;bar: print "ok 4\n";}&foo;sub bar { $x = 'bypass'; eval "goto $x";}&bar;exit;FINALE:print "ok 13\n";# does goto LABEL handle block contexts correctly?my $cond = 1;for (1) { if ($cond == 1) { $cond = 0; goto OTHER; } elsif ($cond == 0) { OTHER: $cond = 2; print "ok 14\n"; goto THIRD; } else { THIRD: print "ok 15\n"; }}print "ok 16\n";exit;bypass:print "ok 5\n";# Test autoloading mechanism.sub two { ($pack, $file, $line) = caller; # Should indicate original call stats. print "@_ $pack $file $line" eq "1 2 3 main $FILE $LINE" ? "ok 7\n" : "not ok 7\n";}sub one { eval <<'END'; sub one { print "ok 6\n"; goto &two; print "not ok 6\n"; }END goto &one;}$FILE = __FILE__;$LINE = __LINE__ + 1;&one(1,2,3);$wherever = NOWHERE;eval { goto $wherever };print $@ =~ /Can't find label NOWHERE/ ? "ok 8\n" : "not ok 8\n";# see if a modified @_ propagates{ package Foo; sub DESTROY { my $s = shift; print "ok $s->[0]\n"; } sub show { print "# @_\nnot ok $_[0][0]\n" if @_ != 5; } sub start { push @_, 1, "foo", {}; goto &show; } for (9..11) { start(bless([$_]), 'bar'); }}sub auto { goto &loadit;}sub AUTOLOAD { print @_ }auto("ok 12\n");$wherever = FINALE;goto $wherever;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -