Commit | Line | Data |
8d063cd8 |
1 | #!./perl |
2 | |
79072805 |
3 | # $RCSfile: goto.t,v $$Revision: 4.1 $$Date: 92/08/07 18:27:56 $ |
8d063cd8 |
4 | |
8990e307 |
5 | # "This IS structured code. It's just randomly structured." |
6 | |
7 | print "1..9\n"; |
8d063cd8 |
8 | |
79072805 |
9 | while ($?) { |
8d063cd8 |
10 | $foo = 1; |
11 | label1: |
12 | $foo = 2; |
13 | goto label2; |
14 | } continue { |
15 | $foo = 0; |
16 | goto label4; |
17 | label3: |
18 | $foo = 4; |
19 | goto label4; |
20 | } |
21 | goto label1; |
22 | |
23 | $foo = 3; |
24 | |
25 | label2: |
26 | print "#1\t:$foo: == 2\n"; |
27 | if ($foo == 2) {print "ok 1\n";} else {print "not ok 1\n";} |
28 | goto label3; |
29 | |
30 | label4: |
31 | print "#2\t:$foo: == 4\n"; |
32 | if ($foo == 4) {print "ok 2\n";} else {print "not ok 2\n";} |
33 | |
34 | $x = `./perl -e 'goto foo;' 2>&1`; |
8d063cd8 |
35 | if ($x =~ /label/) {print "ok 3\n";} else {print "not ok 3\n";} |
79072805 |
36 | |
37 | sub foo { |
38 | goto bar; |
39 | print "not ok 4\n"; |
40 | return; |
41 | bar: |
42 | print "ok 4\n"; |
43 | } |
44 | |
45 | &foo; |
46 | |
47 | sub bar { |
8990e307 |
48 | $x = 'bypass'; |
49 | eval "goto $x"; |
79072805 |
50 | } |
51 | |
52 | &bar; |
53 | exit; |
8990e307 |
54 | |
55 | FINALE: |
56 | print "ok 9\n"; |
57 | exit; |
58 | |
59 | bypass: |
79072805 |
60 | print "ok 5\n"; |
8990e307 |
61 | |
62 | # Test autoloading mechanism. |
63 | |
64 | sub two { |
65 | ($pack, $file, $line) = caller; # Should indicate original call stats. |
66 | print "@_ $pack $file $line" eq "1 2 3 main $FILE $LINE" |
67 | ? "ok 7\n" |
68 | : "not ok 7\n"; |
69 | } |
70 | |
71 | sub one { |
72 | eval <<'END'; |
73 | sub one { print "ok 6\n"; goto &two; print "not ok 6\n"; } |
74 | END |
75 | goto &one; |
76 | } |
77 | |
78 | $FILE = __FILE__; |
79 | $LINE = __LINE__ + 1; |
80 | &one(1,2,3); |
81 | |
82 | $wherever = NOWHERE; |
83 | eval { goto $wherever }; |
84 | print $@ =~ /Can't find label NOWHERE/ ? "ok 8\n" : "not ok 8\n"; |
85 | |
86 | $wherever = FINALE; |
87 | goto $wherever; |