91 lines
1.5 KiB
Perl
Executable File
91 lines
1.5 KiB
Perl
Executable File
#!./perl
|
|
|
|
# $RCSfile: goto.t,v $$Revision: 4.1 $$Date: 92/08/07 18:27:56 $
|
|
|
|
# "This IS structured code. It's just randomly structured."
|
|
|
|
print "1..9\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';
|
|
$x = `$PERL -e "goto foo;" 2>&1`;
|
|
if ($x =~ /DCL-W-NOCOMD/) { $x = `\$ mcr sys\$disk:[]perl. -e "goto foo;"`; }
|
|
|
|
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 9\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";
|
|
|
|
$wherever = FINALE;
|
|
goto $wherever;
|