1de8cc8edSafresh1Test no feature indirect. 2de8cc8edSafresh1 3de8cc8edSafresh1__END__ 4de8cc8edSafresh1# NAME feature indirect 5de8cc8edSafresh1use feature 'say'; 6de8cc8edSafresh1package Foo { 7de8cc8edSafresh1 sub new { bless {}, shift } 8de8cc8edSafresh1} 9de8cc8edSafresh1# various indirect object look-alikes 10de8cc8edSafresh1my $foox = "foox"; 11de8cc8edSafresh1print STDERR "Hello\n"; 12de8cc8edSafresh1printf STDERR "Test%s\n", "x"; 13de8cc8edSafresh1say STDERR "Hello"; 14de8cc8edSafresh1exec $foox "foo", "bar"; 15de8cc8edSafresh1system $foox "foo", "bar"; 16de8cc8edSafresh1my $x = new Foo; 17de8cc8edSafresh1no feature "indirect"; 18de8cc8edSafresh1print STDERR "Hello\n"; 19de8cc8edSafresh1printf STDERR "Test%s\n", "x"; 20de8cc8edSafresh1say STDERR "Hello"; 21de8cc8edSafresh1exec $foox "foo", "bar"; 22de8cc8edSafresh1system $foox "foo", "bar"; 23de8cc8edSafresh1my $y = new Foo; 24de8cc8edSafresh1EXPECT 25de8cc8edSafresh1OPTIONS fatal 26*f2a19305Safresh1Bareword found where operator expected (Do you need to predeclare "new"?) at - line 19, near "new Foo" 27de8cc8edSafresh1syntax error at - line 19, near "new Foo" 28de8cc8edSafresh1Execution of - aborted due to compilation errors. 29de8cc8edSafresh1######## 30de8cc8edSafresh1# NAME METHOD BLOCK 31de8cc8edSafresh1use feature 'say'; 32de8cc8edSafresh1package Foo { 33de8cc8edSafresh1 sub new { bless {}, shift } 34de8cc8edSafresh1} 35de8cc8edSafresh1# make sure this works (either way) 36de8cc8edSafresh1my $st = STDOUT; 37de8cc8edSafresh1print { $st } "Foo\n"; 38de8cc8edSafresh1say { $st } "Foo"; 39de8cc8edSafresh1 40de8cc8edSafresh1# make sure this continues to work by default 41de8cc8edSafresh1my $class = "Foo"; 42de8cc8edSafresh1my $x = new { $class }; 43de8cc8edSafresh1 44de8cc8edSafresh1use feature "indirect"; 45de8cc8edSafresh1 46de8cc8edSafresh1# and with it explicitly enabled 47de8cc8edSafresh1 48de8cc8edSafresh1print { $st } "Foo\n"; 49de8cc8edSafresh1say { $st } "Foo"; 50de8cc8edSafresh1 51de8cc8edSafresh1my $y = new { $class }; 52de8cc8edSafresh1 53de8cc8edSafresh1 54de8cc8edSafresh1no feature "indirect"; 55de8cc8edSafresh1 56de8cc8edSafresh1# and only the indirect now fails 57de8cc8edSafresh1print { $st } "Foo\n"; 58de8cc8edSafresh1say { $st } "Foo"; 59de8cc8edSafresh1my $z = new { $class }; 60de8cc8edSafresh1 61de8cc8edSafresh1EXPECT 62de8cc8edSafresh1OPTIONS fatal 63de8cc8edSafresh1syntax error at - line 29, near "new { " 64de8cc8edSafresh1Execution of - aborted due to compilation errors. 65de8cc8edSafresh1######## 66de8cc8edSafresh1# NAME METHOD SCALAR 67de8cc8edSafresh1use feature 'say'; 68de8cc8edSafresh1package Foo { 69de8cc8edSafresh1 sub new { bless {}, shift } 70de8cc8edSafresh1} 71de8cc8edSafresh1# make sure this works (either way) 72de8cc8edSafresh1my $st = STDOUT; 73de8cc8edSafresh1print $st "Foo\n"; 74de8cc8edSafresh1say $st "Foo"; 75de8cc8edSafresh1 76de8cc8edSafresh1# make sure this continues to work by default 77de8cc8edSafresh1my $class = "Foo"; 78de8cc8edSafresh1my $x = new $class; 79de8cc8edSafresh1 80de8cc8edSafresh1use feature "indirect"; 81de8cc8edSafresh1 82de8cc8edSafresh1# and with it explicitly enabled 83de8cc8edSafresh1 84de8cc8edSafresh1print $st "Foo\n"; 85de8cc8edSafresh1say $st "Foo"; 86de8cc8edSafresh1 87de8cc8edSafresh1my $y = new $class; 88de8cc8edSafresh1 89de8cc8edSafresh1 90de8cc8edSafresh1no feature "indirect"; 91de8cc8edSafresh1 92de8cc8edSafresh1# and only the indirect now fails 93de8cc8edSafresh1print $st "Foo\n"; 94de8cc8edSafresh1say $st "Foo"; 95de8cc8edSafresh1my $z = new $class; 96de8cc8edSafresh1 97de8cc8edSafresh1EXPECT 98de8cc8edSafresh1OPTIONS fatal 99*f2a19305Safresh1Scalar found where operator expected (Do you need to predeclare "new"?) at - line 29, near "new $class" 100de8cc8edSafresh1syntax error at - line 29, near "new $class" 101de8cc8edSafresh1Execution of - aborted due to compilation errors. 102de8cc8edSafresh1######## 103de8cc8edSafresh1# NAME FUNCMETH SCALAR 104de8cc8edSafresh1use feature 'say'; 105de8cc8edSafresh1package Foo { 106de8cc8edSafresh1 sub new { bless {}, shift } 107de8cc8edSafresh1} 108de8cc8edSafresh1# make sure this works (either way) 109de8cc8edSafresh1my $st = STDOUT; 110de8cc8edSafresh1print $st ("Foo\n"); 111de8cc8edSafresh1say $st ("Foo"); 112de8cc8edSafresh1 113de8cc8edSafresh1# make sure this continues to work by default 114de8cc8edSafresh1my $class = "Foo"; 115de8cc8edSafresh1my $x = new $class (); 116de8cc8edSafresh1 117de8cc8edSafresh1use feature "indirect"; 118de8cc8edSafresh1 119de8cc8edSafresh1# and with it explicitly enabled 120de8cc8edSafresh1 121de8cc8edSafresh1print $st ("Foo\n"); 122de8cc8edSafresh1say $st ("Foo"); 123de8cc8edSafresh1 124de8cc8edSafresh1my $y = new $class (); 125de8cc8edSafresh1 126de8cc8edSafresh1 127de8cc8edSafresh1no feature "indirect"; 128de8cc8edSafresh1 129de8cc8edSafresh1# and only the indirect now fails 130de8cc8edSafresh1print $st ("Foo\n"); 131de8cc8edSafresh1say $st ("Foo"); 132de8cc8edSafresh1my $z = new $class (); 133de8cc8edSafresh1 134de8cc8edSafresh1EXPECT 135de8cc8edSafresh1OPTIONS fatal 136*f2a19305Safresh1Scalar found where operator expected (Do you need to predeclare "new"?) at - line 29, near "new $class" 137de8cc8edSafresh1syntax error at - line 29, near "new $class " 138de8cc8edSafresh1Execution of - aborted due to compilation errors. 139