This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
2a52dfb2df61395932b4865b4dbf1e07f4a2e624
[perl5.git] / t / pragma / warn / pp_hot
1   pp_hot.c      AOK
2
3   Filehandle %s never opened
4     $f = $a = "abc" ; print $f $a
5
6   Filehandle %s opened only for input
7     print STDIN "abc" ;
8
9   Filehandle %s opened only for output
10     print <STDOUT> ;
11
12   print on closed filehandle %s
13     close STDIN ; print STDIN "abc" ;
14
15   uninitialized
16         my $a = undef ; my @b = @$a
17
18   uninitialized 
19         my $a = undef ; my %b = %$a
20
21   Odd number of elements in hash list
22         %X = (1,2,3) ;
23
24   Reference found where even-sized list expected 
25         $X = [ 1 ..3 ];
26
27   Read on closed filehandle %s
28     close STDIN ; $a = <STDIN>;
29
30   Deep recursion on subroutine \"%s\"
31      sub fred { fred() if $a++ < 200} fred()
32
33   Deep recursion on anonymous subroutine 
34      $a = sub { &$a if $a++ < 200} &$a
35
36 __END__
37 # pp_hot.c
38 use warnings 'unopened' ;
39 $f = $a = "abc" ; 
40 print $f $a;
41 no warnings 'unopened' ;
42 print $f $a;
43 EXPECT
44 Filehandle main::abc never opened at - line 4.
45 ########
46 # pp_hot.c
47 use warnings 'io' ;
48 print STDIN "anc";
49 print <STDOUT>;
50 print <STDERR>;
51 open(FOO, ">&STDOUT") and print <FOO>;
52 print getc(STDERR);
53 print getc(FOO);
54 read(FOO,$_,1);
55 no warnings 'io' ;
56 print STDIN "anc";
57 ####################################################################
58 #                            N O T E                               #
59 # This test is known to fail on Linux and *BSD systems with glibc. #
60 # The glibc development team is aware of the problem, and has      #
61 # determined a fix for the next release of that library.           #
62 ####################################################################
63 EXPECT
64 Filehandle main::STDIN opened only for input at - line 3.
65 Filehandle main::STDOUT opened only for output at - line 4.
66 Filehandle main::STDERR opened only for output at - line 5.
67 Filehandle main::FOO opened only for output at - line 6.
68 Filehandle main::STDERR opened only for output at - line 7.
69 Filehandle main::FOO opened only for output at - line 8.
70 Filehandle main::FOO opened only for output at - line 9.
71 ########
72 # pp_hot.c
73 use warnings 'closed' ;
74 close STDIN ;
75 print STDIN "anc";
76 no warnings 'closed' ;
77 print STDIN "anc";
78 EXPECT
79 print on closed filehandle main::STDIN at - line 4.
80 ########
81 # pp_hot.c
82 use warnings 'uninitialized' ;
83 my $a = undef ;
84 my @b = @$a;
85 no warnings 'uninitialized' ;
86 my @c = @$a;
87 EXPECT
88 Use of uninitialized value at - line 4.
89 ########
90 # pp_hot.c
91 use warnings 'uninitialized' ;
92 my $a = undef ;
93 my %b = %$a;
94 no warnings 'uninitialized' ;
95 my %c = %$a;
96 EXPECT
97 Use of uninitialized value at - line 4.
98 ########
99 # pp_hot.c
100 use warnings 'unsafe' ;
101 my %X ; %X = (1,2,3) ;
102 no warnings 'unsafe' ;
103 my %Y ; %Y = (1,2,3) ;
104 EXPECT
105 Odd number of elements in hash assignment at - line 3.
106 ########
107 # pp_hot.c
108 use warnings 'unsafe' ;
109 my %X ; %X = [1 .. 3] ;
110 no warnings 'unsafe' ;
111 my %Y ; %Y = [1 .. 3] ;
112 EXPECT
113 Reference found where even-sized list expected at - line 3.
114 ########
115 # pp_hot.c
116 use warnings 'closed' ;
117 close STDIN ; $a = <STDIN> ;
118 no warnings 'closed' ;
119 $a = <STDIN> ;
120 EXPECT
121 Read on closed filehandle main::STDIN at - line 3.
122 ########
123 # pp_hot.c
124 use warnings 'recursion' ;
125 sub fred 
126
127     fred() if $a++ < 200
128
129 {
130   local $SIG{__WARN__} = sub {
131     die "ok\n" if $_[0] =~ /^Deep recursion on subroutine "main::fred"/
132   };
133   fred();
134 }
135 EXPECT
136 ok
137 ########
138 # pp_hot.c
139 no warnings 'recursion' ;
140 sub fred 
141
142     fred() if $a++ < 200
143
144 {
145   local $SIG{__WARN__} = sub {
146     die "ok\n" if $_[0] =~ /^Deep recursion on subroutine "main::fred"/
147   };
148   fred();
149 }
150 EXPECT
151
152 ########
153 # pp_hot.c
154 use warnings 'recursion' ;
155 $b = sub 
156
157     &$b if $a++ < 200
158 }  ;
159
160 &$b ;
161 EXPECT
162 Deep recursion on anonymous subroutine at - line 5.
163 ########
164 # pp_hot.c
165 no warnings 'recursion' ;
166 $b = sub 
167
168     &$b if $a++ < 200
169 }  ;
170
171 &$b ;
172 EXPECT
173