freebsd-dev/contrib/perl5/t/op/goto.t

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;