This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Include variable names in "Use of uninitialized value" warnings
[perl5.git] / t / lib / warnings / 9uninit
1 DAPM 4/2004.
2
3 Test the appearance of variable names in "Use of uninitialized value"
4 warnings.
5
6 The following ops aren't tested, mainly because they do IO or non-portable
7 stuff:
8
9     send recv bind conect listen accept shutdown chdir chown chroot unlink
10     chmod utime rename link symlink readlink mkdir rmdir opendir seekdir
11     system exec kill getpgrp alarm sleep dofile require gethostbyname
12     gethostbyaddr getnetbyname getnetbyaddr getprotobyname getprotobynumber
13     getservbyname getservbyport sethostent setnetent setprotoent setservent
14     getpwnam getpwuid getgrnam getgrgid waitpid setpgrp setpriority
15     getpriority syscall dbmopen ioctl fcntl truncate getsockopt setsockopt
16     semctl semop semget msgget msgctl msgsnd msgrcv shmget shmctl shmread
17     shmwrite
18
19     ---------------------------------------------------
20
21
22 __END__
23 use warnings 'uninitialized';
24 my ($m1, $m2, $v);
25
26 $v = $m1 + 10;
27 $v = 22 + $m2;
28 $v = $m1 + $m2;
29 EXPECT
30 Use of uninitialized value $m1 in addition (+) at - line 4.
31 Use of uninitialized value $m2 in addition (+) at - line 5.
32 Use of uninitialized value $m2 in addition (+) at - line 6.
33 Use of uninitialized value $m1 in addition (+) at - line 6.
34 ########
35 use warnings 'uninitialized';
36 my ($m1, $v);
37 our ($g1, $g2);
38
39 $v = $g1 + 21;
40 $v = 31 + $g2;
41 $v = $g1 + $g2;
42 $v = $m1 + $g2;
43 EXPECT
44 Use of uninitialized value $g1 in addition (+) at - line 5.
45 Use of uninitialized value $g2 in addition (+) at - line 6.
46 Use of uninitialized value $g2 in addition (+) at - line 7.
47 Use of uninitialized value $g1 in addition (+) at - line 7.
48 Use of uninitialized value $g2 in addition (+) at - line 8.
49 Use of uninitialized value $m1 in addition (+) at - line 8.
50 ########
51 use warnings 'uninitialized';
52 my ($m1, @ma, $v);
53
54 $v = $ma[5] + 45;
55 $v = 56 + $ma[6];
56 $v = $ma[7] + $m1;
57 $v = $ma[8] + $ma[9];
58 $v = $ma[-1] + $ma[-2];
59 EXPECT
60 Use of uninitialized value $ma[5] in addition (+) at - line 4.
61 Use of uninitialized value $ma[6] in addition (+) at - line 5.
62 Use of uninitialized value $m1 in addition (+) at - line 6.
63 Use of uninitialized value in addition (+) at - line 6.
64 Use of uninitialized value in addition (+) at - line 7.
65 Use of uninitialized value in addition (+) at - line 7.
66 Use of uninitialized value in addition (+) at - line 8.
67 Use of uninitialized value in addition (+) at - line 8.
68 ########
69 use warnings 'uninitialized';
70 my ($v);
71 my @mau = (undef) x 258;
72 my %mhu = ('foo', undef, 'bar', undef);
73
74 $v = $mau[5] + 23;
75 $v = $mau[-5] + 45;
76 $v = 56 + $mau[6];
77 $v = 78 + $mau[-6];
78 $v = $mau[7] + $mau[8];
79 $v = $mau[256] + $mau[257];
80 $v = $mau[-1] + $mau[-2];
81 $v = $mhu{foo} + $mhu{bar};
82 EXPECT
83 Use of uninitialized value $mau[5] in addition (+) at - line 6.
84 Use of uninitialized value $mau[-5] in addition (+) at - line 7.
85 Use of uninitialized value $mau[6] in addition (+) at - line 8.
86 Use of uninitialized value $mau[-6] in addition (+) at - line 9.
87 Use of uninitialized value $mau[8] in addition (+) at - line 10.
88 Use of uninitialized value $mau[7] in addition (+) at - line 10.
89 Use of uninitialized value $mau[257] in addition (+) at - line 11.
90 Use of uninitialized value $mau[256] in addition (+) at - line 11.
91 Use of uninitialized value $mau[-2] in addition (+) at - line 12.
92 Use of uninitialized value $mau[-1] in addition (+) at - line 12.
93 Use of uninitialized value $mhu{"bar"} in addition (+) at - line 13.
94 Use of uninitialized value $mhu{"foo"} in addition (+) at - line 13.
95 ########
96 use warnings 'uninitialized';
97 my ($v);
98 our (@ga);
99
100 $v = $ga[8] + 21;
101 $v = $ga[-8] + 46;
102 $v = 57 + $ga[9];
103 $v = 58 + $ga[-9];
104 $v = $ga[10] + $ga[11];
105 $v = $ga[-10] + $ga[-11];
106 EXPECT
107 Use of uninitialized value $ga[8] in addition (+) at - line 5.
108 Use of uninitialized value $ga[-8] in addition (+) at - line 6.
109 Use of uninitialized value $ga[9] in addition (+) at - line 7.
110 Use of uninitialized value $ga[-9] in addition (+) at - line 8.
111 Use of uninitialized value in addition (+) at - line 9.
112 Use of uninitialized value in addition (+) at - line 9.
113 Use of uninitialized value in addition (+) at - line 10.
114 Use of uninitialized value in addition (+) at - line 10.
115 ########
116 use warnings 'uninitialized';
117 my ($v);
118 our @gau = (undef) x 258;
119 our %ghu = ('foo', undef, 'bar', undef);
120
121 $v = $gau[8] + 46;
122 $v = $gau[-8] + 47;
123 $v = 57 + $gau[9];
124 $v = 57 + $gau[-9];
125 $v = $gau[10] + $gau[11];
126 $v = $gau[256] + $gau[257];
127 $v = $gau[-1] + $gau[-2];
128 $v = $ghu{foo} + $ghu{bar};
129 EXPECT
130 Use of uninitialized value $gau[8] in addition (+) at - line 6.
131 Use of uninitialized value $gau[-8] in addition (+) at - line 7.
132 Use of uninitialized value $gau[9] in addition (+) at - line 8.
133 Use of uninitialized value $gau[-9] in addition (+) at - line 9.
134 Use of uninitialized value $gau[11] in addition (+) at - line 10.
135 Use of uninitialized value $gau[10] in addition (+) at - line 10.
136 Use of uninitialized value $gau[257] in addition (+) at - line 11.
137 Use of uninitialized value $gau[256] in addition (+) at - line 11.
138 Use of uninitialized value $gau[-2] in addition (+) at - line 12.
139 Use of uninitialized value $gau[-1] in addition (+) at - line 12.
140 Use of uninitialized value $ghu{"bar"} in addition (+) at - line 13.
141 Use of uninitialized value $ghu{"foo"} in addition (+) at - line 13.
142 ########
143 use warnings 'uninitialized';
144 my ($v);
145 our @gau = (undef) x 258;
146 our %ghu = ('foo', undef, 'bar', undef);
147 my @mau = (undef) x 258;
148 my %mhu = ('foo', undef, 'bar', undef);
149
150 my $i1 = 10;
151 my $i2 = 20;
152 my $i3 = 2000;
153 my $k1 = 'foo';
154 my $k2 = 'bar';
155 my $k3 = 'baz';
156 $v = $mau[$i1] + $mau[$i2];
157 $v = $gau[$i1] + $gau[$i2];
158 $v = $gau[$i1] + $gau[$i3];
159 $v = $mhu{$k1} + $mhu{$k2};
160 $v = $ghu{$k1} + $ghu{$k2};
161 $v = $ghu{$k1} + $ghu{$k3};
162 EXPECT
163 Use of uninitialized value $mau[20] in addition (+) at - line 14.
164 Use of uninitialized value $mau[10] in addition (+) at - line 14.
165 Use of uninitialized value $gau[20] in addition (+) at - line 15.
166 Use of uninitialized value $gau[10] in addition (+) at - line 15.
167 Use of uninitialized value in addition (+) at - line 16.
168 Use of uninitialized value $gau[10] in addition (+) at - line 16.
169 Use of uninitialized value $mhu{"bar"} in addition (+) at - line 17.
170 Use of uninitialized value $mhu{"foo"} in addition (+) at - line 17.
171 Use of uninitialized value $ghu{"bar"} in addition (+) at - line 18.
172 Use of uninitialized value $ghu{"foo"} in addition (+) at - line 18.
173 Use of uninitialized value in addition (+) at - line 19.
174 Use of uninitialized value $ghu{"foo"} in addition (+) at - line 19.
175 ########
176 use warnings 'uninitialized';
177 my ($m1, $m2, @ma, %mh, $v);
178 our ($g1, $g2, @ga, %gh);
179
180 $v = $ma[$m1];
181 $v = $ma[$g1];
182 $v = $ga[$m2];
183 $v = $ga[$g2];
184
185 $v = $mh{$m1};
186 $v = $mh{$g1};
187 $v = $gh{$m2};
188 $v = $gh{$g2};
189
190 $v = $m1+($m2-$g1);
191 $v = $ma[$ga[3]];
192 $v = $ga[$ma[4]];
193 EXPECT
194 Use of uninitialized value $m1 in array element at - line 5.
195 Use of uninitialized value $g1 in array element at - line 6.
196 Use of uninitialized value $m2 in array element at - line 7.
197 Use of uninitialized value $g2 in array element at - line 8.
198 Use of uninitialized value $m1 in hash element at - line 10.
199 Use of uninitialized value $g1 in hash element at - line 11.
200 Use of uninitialized value $m2 in hash element at - line 12.
201 Use of uninitialized value $g2 in hash element at - line 13.
202 Use of uninitialized value $g1 in subtraction (-) at - line 15.
203 Use of uninitialized value $m2 in subtraction (-) at - line 15.
204 Use of uninitialized value $m1 in addition (+) at - line 15.
205 Use of uninitialized value $ga[3] in array element at - line 16.
206 Use of uninitialized value $ma[4] in array element at - line 17.
207 ########
208 use warnings 'uninitialized';
209 my (@ma, %mh, $v);
210 our (@ga, %gh);
211
212 $v = sin $ga[1000];
213 $v = sin $ma[1000];
214 $v = sin $gh{foo};
215 $v = sin $mh{bar};
216
217 $v = sin $ga[$$];
218 $v = sin $ma[$$];
219 $v = sin $gh{$$};
220 $v = sin $mh{$$};
221 EXPECT
222 Use of uninitialized value $ga[1000] in sin at - line 5.
223 Use of uninitialized value $ma[1000] in sin at - line 6.
224 Use of uninitialized value $gh{"foo"} in sin at - line 7.
225 Use of uninitialized value $mh{"bar"} in sin at - line 8.
226 Use of uninitialized value within @ga in sin at - line 10.
227 Use of uninitialized value within @ma in sin at - line 11.
228 Use of uninitialized value within %gh in sin at - line 12.
229 Use of uninitialized value within %mh in sin at - line 13.
230 ########
231 use warnings 'uninitialized';
232 my (@mat, %mht, $v);
233 sub X::TIEARRAY { bless [], 'X' }
234 sub X::TIEHASH { bless [], 'X' }
235 sub X::FETCH { undef }
236 tie @mat, 'X';
237 tie %mht, 'X';
238 my $key1 = 'akey';
239 my $key2 = 'bkey';
240 my $index1 = 33;
241 my $index2 = 55;
242
243 $v = sin $mat[0];
244 $v = $mat[0] + $mat[1];
245 $v = sin $mat[1000];
246 $v = $mat[1000] + $mat[1001];
247
248 $v = sin $mat[$index1];
249 $v = $mat[$index1] + $mat[$index2];
250
251 $v = sin $mht{foo};
252 $v = $mht{foo} + $mht{bar};
253
254 $v = sin $mht{$key1};
255 $v = $mht{$key1} + $mht{$key2};
256
257 $v = $1+1;
258 EXPECT
259 Use of uninitialized value $mat[0] in sin at - line 13.
260 Use of uninitialized value in addition (+) at - line 14.
261 Use of uninitialized value in addition (+) at - line 14.
262 Use of uninitialized value $mat[1000] in sin at - line 15.
263 Use of uninitialized value in addition (+) at - line 16.
264 Use of uninitialized value in addition (+) at - line 16.
265 Use of uninitialized value within @mat in sin at - line 18.
266 Use of uninitialized value in addition (+) at - line 19.
267 Use of uninitialized value in addition (+) at - line 19.
268 Use of uninitialized value $mht{"foo"} in sin at - line 21.
269 Use of uninitialized value in addition (+) at - line 22.
270 Use of uninitialized value in addition (+) at - line 22.
271 Use of uninitialized value within %mht in sin at - line 24.
272 Use of uninitialized value in addition (+) at - line 25.
273 Use of uninitialized value in addition (+) at - line 25.
274 Use of uninitialized value $1 in addition (+) at - line 27.
275 ########
276 use warnings 'uninitialized';
277 my ($m1);
278 our ($g1, @ga);
279
280 print $ga[1000];
281 print STDERR $ga[1000];
282 print STDERR $m1, $g1, $ga[1],$m2;
283 print STDERR "", $ga[1],"";
284 EXPECT
285 Use of uninitialized value $ga[1000] in print at - line 5.
286 Use of uninitialized value $ga[1000] in print at - line 6.
287 Use of uninitialized value $m1 in print at - line 7.
288 Use of uninitialized value $g1 in print at - line 7.
289 Use of uninitialized value in print at - line 7.
290 Use of uninitialized value $m2 in print at - line 7.
291 Use of uninitialized value $ga[1] in print at - line 8.
292 ########
293 use warnings 'uninitialized';
294 my ($m1);
295 our ($g1);
296
297 close $m1;      # exercises rv2gv
298 close $g1;      # exercises rv2gv
299 EXPECT
300 Use of uninitialized value $m1 in ref-to-glob cast at - line 5.
301 Use of uninitialized value $g1 in ref-to-glob cast at - line 6.
302 ########
303 use warnings 'uninitialized';
304 my ($m1, $m2, $v);
305 our ($g1, $g2);
306
307 $v = $$m1;
308 $v = $$g1;
309
310 $v = @$m1;
311 $v = @$g1;
312 $v = %$m2;
313 $v = %$g2;
314 EXPECT
315 Use of uninitialized value $m1 in scalar dereference at - line 5.
316 Use of uninitialized value $g1 in scalar dereference at - line 6.
317 Use of uninitialized value $m1 in array dereference at - line 8.
318 Use of uninitialized value $g1 in array dereference at - line 9.
319 Use of uninitialized value $m2 in hash dereference at - line 10.
320 Use of uninitialized value $g2 in hash dereference at - line 11.
321 ########
322 use warnings 'uninitialized';
323 my ($m1, $v);
324 our ($g1);
325
326 $v = $m1 | $m2;
327 $v = $m1 & $m2;
328 $v = $m1 ^ $m2;
329 $v = ~$m1;
330
331 $v = $g1 | $g2;
332 $v = $g1 & $g2;
333 $v = $g1 ^ $g2;
334 $v = ~$g1;
335 EXPECT
336 Use of uninitialized value $m1 in bitwise or (|) at - line 5.
337 Use of uninitialized value $m2 in bitwise or (|) at - line 5.
338 Use of uninitialized value $m1 in bitwise and (&) at - line 6.
339 Use of uninitialized value $m2 in bitwise and (&) at - line 6.
340 Use of uninitialized value $m1 in bitwise xor (^) at - line 7.
341 Use of uninitialized value $m2 in bitwise xor (^) at - line 7.
342 Use of uninitialized value $m1 in 1's complement (~) at - line 8.
343 Use of uninitialized value $g1 in bitwise or (|) at - line 10.
344 Use of uninitialized value $g2 in bitwise or (|) at - line 10.
345 Use of uninitialized value $g1 in bitwise and (&) at - line 11.
346 Use of uninitialized value $g2 in bitwise and (&) at - line 11.
347 Use of uninitialized value $g1 in bitwise xor (^) at - line 12.
348 Use of uninitialized value $g2 in bitwise xor (^) at - line 12.
349 Use of uninitialized value $g1 in 1's complement (~) at - line 13.
350 ########
351 use warnings 'uninitialized';
352 my ($v);
353
354 my  $tmp1; $v = $tmp1++; # (doesn't warn)
355 our $tmp2; $v = $tmp2++; # (doesn't warn)
356 my  $tmp3; $v = ++$tmp1; # (doesn't warn)
357 our $tmp4; $v = ++$tmp2; # (doesn't warn)
358
359 my  $tmp5; $v = $tmp5--; # (doesn't warn)
360 our $tmp6; $v = $tmp6--; # (doesn't warn)
361 my  $tmp7; $v = --$tmp7; # (doesn't warn)
362 our $tmp8; $v = --$tmp8; # (doesn't warn)
363 EXPECT
364 ########
365 use warnings 'uninitialized';
366
367 my $s1; chomp $s1;
368 my $s2; chop  $s2;
369 my ($s3,$s4); chomp ($s3,$s4);
370 my ($s5,$s6); chop  ($s5,$s6);
371 EXPECT
372 Use of uninitialized value $s1 in scalar chomp at - line 3.
373 Use of uninitialized value $s2 in scalar chop at - line 4.
374 Use of uninitialized value $s4 in chomp at - line 5.
375 Use of uninitialized value $s3 in chomp at - line 5.
376 Use of uninitialized value $s5 in chop at - line 6.
377 Use of uninitialized value $s6 in chop at - line 6.
378 ########
379 use warnings 'uninitialized';
380 my ($m1);
381
382 local $/ =\$m1;
383 my $x = "abc";
384 chomp $x; chop $x;
385 my $y;
386 chomp ($x, $y); chop ($x, $y);
387 EXPECT
388 Use of uninitialized value ${$/} in scalar chomp at - line 6.
389 Use of uninitialized value ${$/} in chomp at - line 8.
390 Use of uninitialized value $y in chomp at - line 8.
391 Use of uninitialized value ${$/} in chomp at - line 8.
392 Use of uninitialized value $y in chop at - line 8.
393 ########
394 use warnings 'uninitialized';
395 my ($m1, @ma, %mh);
396 our ($g1);
397
398 delete $ma[$m1];
399 delete @ma[$m1, $g1];
400 delete $mh{$m1};
401 delete @mh{$m1, $g1};
402 EXPECT
403 Use of uninitialized value $m1 in delete at - line 5.
404 Use of uninitialized value $m1 in delete at - line 6.
405 Use of uninitialized value $g1 in delete at - line 6.
406 Use of uninitialized value $m1 in delete at - line 7.
407 Use of uninitialized value $m1 in delete at - line 8.
408 Use of uninitialized value $g1 in delete at - line 8.
409 ########
410 use warnings 'uninitialized';
411 my ($m1, @ma, %mh);
412 our ($g1);
413
414 my @a = @ma[$m1, $g1];
415 @a = (4,5)[$m1, $g1];
416 @a = @mh{$m1, $g1};
417 EXPECT
418 Use of uninitialized value $m1 in array slice at - line 5.
419 Use of uninitialized value $g1 in array slice at - line 5.
420 Use of uninitialized value $m1 in list slice at - line 6.
421 Use of uninitialized value $g1 in list slice at - line 6.
422 Use of uninitialized value $m1 in hash slice at - line 7.
423 Use of uninitialized value $g1 in hash slice at - line 7.
424 ########
425 use warnings 'uninitialized';
426 my ($m1, @ma, %mh, $v);
427 our ($g1, @ga, %gh);
428
429 $v = exists $ma[$m1];
430 $v = exists $ga[$g1];
431 $v = exists $mh{$m1};
432 $v = exists $gh{$g1};
433 EXPECT
434 Use of uninitialized value $m1 in exists at - line 5.
435 Use of uninitialized value $g1 in exists at - line 6.
436 Use of uninitialized value $m1 in exists at - line 7.
437 Use of uninitialized value $g1 in exists at - line 8.
438 ########
439 use warnings 'uninitialized';
440 my ($m1, $v);
441 our ($g1);
442
443 my ($x1,$x2);
444 $v = $x1 << $m1;
445 $v = $x2 << $g1;
446 EXPECT
447 Use of uninitialized value $m1 in left bitshift (<<) at - line 6.
448 Use of uninitialized value $x1 in left bitshift (<<) at - line 6.
449 Use of uninitialized value $g1 in left bitshift (<<) at - line 7.
450 Use of uninitialized value $x2 in left bitshift (<<) at - line 7.
451 ########
452 use warnings 'uninitialized';
453 my ($m1, $m2, $v);
454 our ($g1, $g2);
455
456 use integer;
457 $v = $m1 + $g1;
458 $v = $m1 - $g1;
459 $v = $m1 * $g1;
460 eval {$v = $m1 / $g1};
461 $v = $m2 / 2;
462 eval {$v = $m1 % $g1};
463 $v = $m2 % 2;
464 $v = $m1 < $g1;
465 $v = $m1 > $g1;
466 $v = $m1 <= $g1;
467 $v = $m1 >= $g1;
468 $v = $m1 == $g1;
469 $v = $m1 != $g1;
470 $v = $m1 <=> $g1;
471 $v = -$m1;
472 EXPECT
473 Use of uninitialized value $g1 in integer addition (+) at - line 6.
474 Use of uninitialized value $m1 in integer addition (+) at - line 6.
475 Use of uninitialized value $g1 in integer subtraction (-) at - line 7.
476 Use of uninitialized value $m1 in integer subtraction (-) at - line 7.
477 Use of uninitialized value $g1 in integer multiplication (*) at - line 8.
478 Use of uninitialized value $m1 in integer multiplication (*) at - line 8.
479 Use of uninitialized value $g1 in integer division (/) at - line 9.
480 Use of uninitialized value $m2 in integer division (/) at - line 10.
481 Use of uninitialized value $g1 in integer modulus (%) at - line 11.
482 Use of uninitialized value $m1 in integer modulus (%) at - line 11.
483 Use of uninitialized value $m2 in integer modulus (%) at - line 12.
484 Use of uninitialized value $g1 in integer lt (<) at - line 13.
485 Use of uninitialized value $m1 in integer lt (<) at - line 13.
486 Use of uninitialized value $g1 in integer gt (>) at - line 14.
487 Use of uninitialized value $m1 in integer gt (>) at - line 14.
488 Use of uninitialized value $g1 in integer le (<=) at - line 15.
489 Use of uninitialized value $m1 in integer le (<=) at - line 15.
490 Use of uninitialized value $g1 in integer ge (>=) at - line 16.
491 Use of uninitialized value $m1 in integer ge (>=) at - line 16.
492 Use of uninitialized value $g1 in integer eq (==) at - line 17.
493 Use of uninitialized value $m1 in integer eq (==) at - line 17.
494 Use of uninitialized value $g1 in integer ne (!=) at - line 18.
495 Use of uninitialized value $m1 in integer ne (!=) at - line 18.
496 Use of uninitialized value $g1 in integer comparison (<=>) at - line 19.
497 Use of uninitialized value $m1 in integer comparison (<=>) at - line 19.
498 Use of uninitialized value $m1 in integer negation (-) at - line 20.
499 ########
500 use warnings 'uninitialized';
501 my ($m1, $m2, $v);
502 our ($g1, $g2);
503
504 $v = int($g1);
505 $v = abs($g2);
506 EXPECT
507 Use of uninitialized value $g1 in int at - line 5.
508 Use of uninitialized value $g1 in int at - line 5.
509 Use of uninitialized value $g2 in abs at - line 6.
510 Use of uninitialized value $g2 in abs at - line 6.
511 ########
512 use warnings 'uninitialized';
513 my ($m1, $m2, $v);
514 our ($g1);
515
516 $v = pack $m1;
517 $v = pack "i*", $m2, $g1, $g2;
518 my @unpack = unpack $m1, $m2;
519 EXPECT
520 Use of uninitialized value $m1 in pack at - line 5.
521 Use of uninitialized value $m2 in pack at - line 6.
522 Use of uninitialized value $g1 in pack at - line 6.
523 Use of uninitialized value $g2 in pack at - line 6.
524 Use of uninitialized value $m1 in unpack at - line 7.
525 Use of uninitialized value $m2 in unpack at - line 7.
526 ########
527 use warnings 'uninitialized';
528 my ($m1);
529 our ($g1);
530
531 my @sort;
532 @sort = sort $m1, $g1;
533 @sort = sort {$a <=> $b} $m1, $g1;
534 sub sortf {$a-1 <=> $b-1};
535 @sort = sort  &sortf, $m1, $g1;
536 EXPECT
537 Use of uninitialized value $m1 in sort at - line 6.
538 Use of uninitialized value $g1 in sort at - line 6.
539 Use of uninitialized value $m1 in sort at - line 6.
540 Use of uninitialized value $g1 in sort at - line 6.
541 Use of uninitialized value $m1 in sort at - line 7.
542 Use of uninitialized value $g1 in sort at - line 7.
543 Use of uninitialized value $m1 in sort at - line 7.
544 Use of uninitialized value $g1 in sort at - line 7.
545 Use of uninitialized value $a in subtraction (-) at - line 8.
546 Use of uninitialized value $b in subtraction (-) at - line 8.
547 Use of uninitialized value $m1 in sort at - line 9.
548 Use of uninitialized value $g1 in sort at - line 9.
549 Use of uninitialized value $m1 in sort at - line 9.
550 Use of uninitialized value $m1 in sort at - line 9.
551 Use of uninitialized value $g1 in sort at - line 9.
552 Use of uninitialized value $g1 in sort at - line 9.
553 ########
554 use warnings 'uninitialized';
555 my ($m1, $m2, $v);
556 our ($g1);
557
558 eval { $v = $m1 / $g1 };
559 $v = $m2 / 2;
560 eval { $v = $m1 % $g1 };
561 $v = $m2 % 2;
562 $v = $m1 == $g1;
563 $v = $m1 >= $g1;
564 $v = $m1 >  $g1;
565 $v = $m1 <= $g1;
566 $v = $m1 <  $g1;
567 $v = $m1 *  $g1;
568 $v = $m1 <=>$g1;
569 $v = $m1 != $g1;
570 $v = $m1   -$g1;
571 $v = $m1 ** $g1;
572 $v = $m1 +  $g1;
573 $v = $m1 -  $g1;
574 EXPECT
575 Use of uninitialized value $g1 in division (/) at - line 5.
576 Use of uninitialized value $m1 in division (/) at - line 5.
577 Use of uninitialized value $m2 in division (/) at - line 6.
578 Use of uninitialized value $g1 in modulus (%) at - line 7.
579 Use of uninitialized value $m1 in modulus (%) at - line 7.
580 Use of uninitialized value $m2 in modulus (%) at - line 8.
581 Use of uninitialized value $g1 in numeric eq (==) at - line 9.
582 Use of uninitialized value $m1 in numeric eq (==) at - line 9.
583 Use of uninitialized value $g1 in numeric ge (>=) at - line 10.
584 Use of uninitialized value $m1 in numeric ge (>=) at - line 10.
585 Use of uninitialized value $g1 in numeric gt (>) at - line 11.
586 Use of uninitialized value $m1 in numeric gt (>) at - line 11.
587 Use of uninitialized value $g1 in numeric le (<=) at - line 12.
588 Use of uninitialized value $m1 in numeric le (<=) at - line 12.
589 Use of uninitialized value $g1 in numeric lt (<) at - line 13.
590 Use of uninitialized value $m1 in numeric lt (<) at - line 13.
591 Use of uninitialized value $g1 in multiplication (*) at - line 14.
592 Use of uninitialized value $m1 in multiplication (*) at - line 14.
593 Use of uninitialized value $g1 in numeric comparison (<=>) at - line 15.
594 Use of uninitialized value $m1 in numeric comparison (<=>) at - line 15.
595 Use of uninitialized value $g1 in numeric ne (!=) at - line 16.
596 Use of uninitialized value $m1 in numeric ne (!=) at - line 16.
597 Use of uninitialized value $g1 in subtraction (-) at - line 17.
598 Use of uninitialized value $m1 in subtraction (-) at - line 17.
599 Use of uninitialized value $g1 in exponentiation (**) at - line 18.
600 Use of uninitialized value $m1 in exponentiation (**) at - line 18.
601 Use of uninitialized value $g1 in addition (+) at - line 19.
602 Use of uninitialized value $m1 in addition (+) at - line 19.
603 Use of uninitialized value $g1 in subtraction (-) at - line 20.
604 Use of uninitialized value $m1 in subtraction (-) at - line 20.
605 ########
606 use warnings 'uninitialized';
607 my ($m1, $v);
608 our ($g1);
609
610 $v = *global1{$m1};
611 $v = prototype $g1;
612 $v = bless [], $g1;
613 $v = `$m1`;
614
615 $v = $m1 . $g1;
616 EXPECT
617 Use of uninitialized value $m1 in glob elem at - line 5.
618 Use of uninitialized value $g1 in subroutine prototype at - line 6.
619 Use of uninitialized value $g1 in bless at - line 7.
620 Use of uninitialized value $m1 in quoted execution (``, qx) at - line 8.
621 Use of uninitialized value $g1 in concatenation (.) or string at - line 10.
622 Use of uninitialized value $m1 in concatenation (.) or string at - line 10.
623 ########
624 use warnings 'uninitialized';
625 my ($m1);
626 our ($g1, $g2);
627
628 /y/;
629 /$m1/;
630 /$g1/;
631
632 s/y/z/;         undef $_;
633 s/$m1/z/;       undef $_;
634 s//$g1/;        undef $_;
635 s/$m1/$g1/;     undef $_;
636 tr/x/y/;        undef $_;
637
638 my $_; 
639 /y/;
640 /$m1/;
641 /$g1/;
642 s/y/z/;         undef $_;
643 s/$m1/z/;       undef $_;
644 s//$g1/;        undef $_;
645 s/$m1/$g1/;     undef $_;
646 tr/x/y/;        undef $_;
647
648 $g2 =~ /y/;
649 $g2 =~ /$m1/;
650 $g2 =~ /$g1/;
651 $g2 =~ s/y/z/;          undef $g2;
652 $g2 =~ s/$m1/z/;        undef $g2;
653 $g2 =~ s//$g1/;         undef $g2;
654 $g2 =~ s/$m1/$g1/;      undef $g2;
655 $g2 =~ tr/x/y/;         undef $g2; # XXX can't extract var name yet
656
657 my $foo = "abc";
658 $foo =~ /$m1/;
659 $foo =~ /$g1/;
660 $foo =~ s/y/z/;
661 $foo =~ s/$m1/z/;
662 $foo =~ s//$g1/;
663 $foo =~ s/$m1/$g1/;
664 $foo =~ s/./$m1/e;
665 EXPECT
666 Use of uninitialized value $_ in pattern match (m//) at - line 5.
667 Use of uninitialized value $m1 in regexp compilation at - line 6.
668 Use of uninitialized value $_ in pattern match (m//) at - line 6.
669 Use of uninitialized value $g1 in regexp compilation at - line 7.
670 Use of uninitialized value $_ in pattern match (m//) at - line 7.
671 Use of uninitialized value $_ in substitution (s///) at - line 9.
672 Use of uninitialized value $m1 in regexp compilation at - line 10.
673 Use of uninitialized value $_ in substitution (s///) at - line 10.
674 Use of uninitialized value $_ in substitution (s///) at - line 10.
675 Use of uninitialized value $_ in substitution (s///) at - line 11.
676 Use of uninitialized value $g1 in substitution (s///) at - line 11.
677 Use of uninitialized value $_ in substitution (s///) at - line 11.
678 Use of uninitialized value $g1 in substitution (s///) at - line 11.
679 Use of uninitialized value $m1 in regexp compilation at - line 12.
680 Use of uninitialized value $_ in substitution (s///) at - line 12.
681 Use of uninitialized value $_ in substitution (s///) at - line 12.
682 Use of uninitialized value $g1 in substitution iterator at - line 12.
683 Use of uninitialized value $_ in transliteration (tr///) at - line 13.
684 Use of uninitialized value $_ in pattern match (m//) at - line 16.
685 Use of uninitialized value $m1 in regexp compilation at - line 17.
686 Use of uninitialized value $_ in pattern match (m//) at - line 17.
687 Use of uninitialized value $g1 in regexp compilation at - line 18.
688 Use of uninitialized value $_ in pattern match (m//) at - line 18.
689 Use of uninitialized value $_ in substitution (s///) at - line 19.
690 Use of uninitialized value $m1 in regexp compilation at - line 20.
691 Use of uninitialized value $_ in substitution (s///) at - line 20.
692 Use of uninitialized value $_ in substitution (s///) at - line 20.
693 Use of uninitialized value $_ in substitution (s///) at - line 21.
694 Use of uninitialized value $g1 in substitution (s///) at - line 21.
695 Use of uninitialized value $_ in substitution (s///) at - line 21.
696 Use of uninitialized value $g1 in substitution (s///) at - line 21.
697 Use of uninitialized value $m1 in regexp compilation at - line 22.
698 Use of uninitialized value $_ in substitution (s///) at - line 22.
699 Use of uninitialized value $_ in substitution (s///) at - line 22.
700 Use of uninitialized value $g1 in substitution iterator at - line 22.
701 Use of uninitialized value $_ in transliteration (tr///) at - line 23.
702 Use of uninitialized value $g2 in pattern match (m//) at - line 25.
703 Use of uninitialized value $m1 in regexp compilation at - line 26.
704 Use of uninitialized value $g2 in pattern match (m//) at - line 26.
705 Use of uninitialized value $g1 in regexp compilation at - line 27.
706 Use of uninitialized value $g2 in pattern match (m//) at - line 27.
707 Use of uninitialized value $g2 in substitution (s///) at - line 28.
708 Use of uninitialized value $m1 in regexp compilation at - line 29.
709 Use of uninitialized value $g2 in substitution (s///) at - line 29.
710 Use of uninitialized value $g2 in substitution (s///) at - line 29.
711 Use of uninitialized value $g2 in substitution (s///) at - line 30.
712 Use of uninitialized value $g1 in substitution (s///) at - line 30.
713 Use of uninitialized value $g2 in substitution (s///) at - line 30.
714 Use of uninitialized value $g1 in substitution (s///) at - line 30.
715 Use of uninitialized value $m1 in regexp compilation at - line 31.
716 Use of uninitialized value $g2 in substitution (s///) at - line 31.
717 Use of uninitialized value $g2 in substitution (s///) at - line 31.
718 Use of uninitialized value $g1 in substitution iterator at - line 31.
719 Use of uninitialized value in transliteration (tr///) at - line 32.
720 Use of uninitialized value $m1 in regexp compilation at - line 35.
721 Use of uninitialized value $g1 in regexp compilation at - line 36.
722 Use of uninitialized value $m1 in regexp compilation at - line 38.
723 Use of uninitialized value $g1 in substitution (s///) at - line 39.
724 Use of uninitialized value $m1 in regexp compilation at - line 40.
725 Use of uninitialized value $g1 in substitution iterator at - line 40.
726 Use of uninitialized value $m1 in substitution iterator at - line 41.
727 ########
728 use warnings 'uninitialized';
729 my ($m1);
730
731 { my $foo = "abc"; (substr($foo,0,0)) = ($m1) }
732 EXPECT
733 Use of uninitialized value $m1 in list assignment at - line 4.
734 ########
735 use warnings 'uninitialized';
736 our ($g1);
737
738 study;
739 study $g1;
740 EXPECT
741 Use of uninitialized value $_ in study at - line 4.
742 Use of uninitialized value $g1 in study at - line 5.
743 ########
744 use warnings 'uninitialized';
745 my ($m1);
746
747 pos()=0;
748 pos($m1)=0;
749 EXPECT
750 Use of uninitialized value $_ in scalar assignment at - line 4.
751 Use of uninitialized value $m1 in scalar assignment at - line 5.
752 ########
753 use warnings 'uninitialized';
754 my ($m1);
755
756 { my $x = "a" x $m1 }           # NB LHS of repeat does not warn
757 { my @x = ("a") x $m1 }
758 EXPECT
759 Use of uninitialized value $m1 in repeat (x) at - line 4.
760 Use of uninitialized value $m1 in repeat (x) at - line 5.
761 ########
762 use warnings 'uninitialized';
763 my ($m1, $v);
764 our ($g1);
765
766 $v = "$m1";
767
768 $v = $m1 lt $g1;
769 $v = $m1 le $g1;
770 $v = $m1 gt $g1;
771 $v = $m1 ge $g1;
772 $v = $m1 eq $g1;
773 $v = $m1 ne $g1;
774 $v = $m1 cmp $g1;
775 EXPECT
776 Use of uninitialized value $m1 in string at - line 5.
777 Use of uninitialized value $m1 in string lt at - line 7.
778 Use of uninitialized value $g1 in string lt at - line 7.
779 Use of uninitialized value $m1 in string le at - line 8.
780 Use of uninitialized value $g1 in string le at - line 8.
781 Use of uninitialized value $m1 in string gt at - line 9.
782 Use of uninitialized value $g1 in string gt at - line 9.
783 Use of uninitialized value $m1 in string ge at - line 10.
784 Use of uninitialized value $g1 in string ge at - line 10.
785 Use of uninitialized value $m1 in string eq at - line 11.
786 Use of uninitialized value $g1 in string eq at - line 11.
787 Use of uninitialized value $m1 in string ne at - line 12.
788 Use of uninitialized value $g1 in string ne at - line 12.
789 Use of uninitialized value $m1 in string comparison (cmp) at - line 13.
790 Use of uninitialized value $g1 in string comparison (cmp) at - line 13.
791 ########
792 use warnings 'uninitialized';
793 my ($m1, $v);
794 our ($g1);
795
796 $v = atan2($m1,$g1);
797 $v = sin $m1;
798 $v = cos $m1;
799 $v = rand $m1;
800 $v = srand $m1;
801 $v = exp $m1;
802 $v = eval {log $m1};
803 $v = sqrt $m1;
804 $v = hex $m1;
805 $v = oct $m1;
806 $v = length $m1;
807 $v = length;
808 EXPECT
809 Use of uninitialized value $g1 in atan2 at - line 5.
810 Use of uninitialized value $m1 in atan2 at - line 5.
811 Use of uninitialized value $m1 in sin at - line 6.
812 Use of uninitialized value $m1 in cos at - line 7.
813 Use of uninitialized value $m1 in rand at - line 8.
814 Use of uninitialized value $m1 in srand at - line 9.
815 Use of uninitialized value $m1 in exp at - line 10.
816 Use of uninitialized value $m1 in log at - line 11.
817 Use of uninitialized value $m1 in sqrt at - line 12.
818 Use of uninitialized value $m1 in hex at - line 13.
819 Use of uninitialized value $m1 in oct at - line 14.
820 Use of uninitialized value $m1 in length at - line 15.
821 Use of uninitialized value $_ in length at - line 16.
822 ########
823 use warnings 'uninitialized';
824 my ($m1, $v);
825 our ($g1);
826
827 $v = substr $m1, $g1;
828 $v = substr $m1, $g1, $m2;
829 $v = substr $m1, $g1, $m2, $g2; undef $m1;
830 substr($m1, $g1) = $g2;         undef $m1; # NB global2
831 substr($m1, $g1, $m2) = $g2;    undef $m1; # isn't identified
832
833 $v = eval {vec ($m1, $g1, $m2)};
834 eval {vec ($m1, $g1, $m2) = $g2};       undef $m1; # ditto
835
836 $v = index  $m1, $m2;
837 $v = index  $m1, $m2, $g1;
838 $v = rindex $m1, $m2;
839 $v = rindex $m1, $m2, $g1;
840 EXPECT
841 Use of uninitialized value $g1 in substr at - line 5.
842 Use of uninitialized value $m1 in substr at - line 5.
843 Use of uninitialized value $m2 in substr at - line 6.
844 Use of uninitialized value $g1 in substr at - line 6.
845 Use of uninitialized value $m1 in substr at - line 6.
846 Use of uninitialized value $g2 in substr at - line 7.
847 Use of uninitialized value $m2 in substr at - line 7.
848 Use of uninitialized value $g1 in substr at - line 7.
849 Use of uninitialized value $m1 in substr at - line 7.
850 Use of uninitialized value $m1 in substr at - line 7.
851 Use of uninitialized value $g1 in substr at - line 8.
852 Use of uninitialized value $m1 in substr at - line 8.
853 Use of uninitialized value in scalar assignment at - line 8.
854 Use of uninitialized value $m2 in substr at - line 9.
855 Use of uninitialized value $g1 in substr at - line 9.
856 Use of uninitialized value $m1 in substr at - line 9.
857 Use of uninitialized value in scalar assignment at - line 9.
858 Use of uninitialized value $m2 in vec at - line 11.
859 Use of uninitialized value $g1 in vec at - line 11.
860 Use of uninitialized value $m1 in vec at - line 11.
861 Use of uninitialized value $m2 in vec at - line 12.
862 Use of uninitialized value $g1 in vec at - line 12.
863 Use of uninitialized value $m1 in vec at - line 12.
864 Use of uninitialized value $m1 in index at - line 14.
865 Use of uninitialized value $m2 in index at - line 14.
866 Use of uninitialized value $g1 in index at - line 15.
867 Use of uninitialized value $m1 in index at - line 15.
868 Use of uninitialized value $m2 in index at - line 15.
869 Use of uninitialized value $m2 in rindex at - line 16.
870 Use of uninitialized value $m1 in rindex at - line 16.
871 Use of uninitialized value $g1 in rindex at - line 17.
872 Use of uninitialized value $m2 in rindex at - line 17.
873 Use of uninitialized value $m1 in rindex at - line 17.
874 ########
875 use warnings 'uninitialized';
876 my ($m1, $v);
877 our ($g1);
878
879 $v = sprintf $m1;
880 $v = sprintf '%d%d%d%d', $m1, $m2, $g1, $g2;
881 eval {formline $m1 };   undef $m1;
882 formline '@<<@<<@<<@<<', $m1, $m2, $g1, $g2;
883 EXPECT
884 Use of uninitialized value $m1 in sprintf at - line 5.
885 Use of uninitialized value $m1 in sprintf at - line 6.
886 Use of uninitialized value $m2 in sprintf at - line 6.
887 Use of uninitialized value $g1 in sprintf at - line 6.
888 Use of uninitialized value $g2 in sprintf at - line 6.
889 Use of uninitialized value $m1 in formline at - line 7.
890 Use of uninitialized value $m1 in formline at - line 8.
891 Use of uninitialized value $m2 in formline at - line 8.
892 Use of uninitialized value $g1 in formline at - line 8.
893 Use of uninitialized value $g2 in formline at - line 8.
894 ########
895 use warnings 'uninitialized';
896 my ($m1, $v);
897 our ($g1);
898
899 $v = crypt $m1, $g1;
900
901 $v = ord;
902 $v = ord $m1;
903 $v = chr;
904 $v = chr $m1;
905
906 # XXX these functions don't warn!
907 $v = ucfirst;
908 $v = ucfirst $m1;
909 $v = lcfirst;
910 $v = lcfirst $m1;
911 $v = uc;
912 $v = uc $m1;
913 $v = lc;
914 $v = lc $m1;
915
916 $v = quotemeta;
917 $v = quotemeta $m1;
918 EXPECT
919 Use of uninitialized value $m1 in crypt at - line 5.
920 Use of uninitialized value $g1 in crypt at - line 5.
921 Use of uninitialized value $_ in ord at - line 7.
922 Use of uninitialized value $m1 in ord at - line 8.
923 Use of uninitialized value $_ in chr at - line 9.
924 Use of uninitialized value $m1 in chr at - line 10.
925 Use of uninitialized value $_ in quotemeta at - line 22.
926 Use of uninitialized value $m1 in quotemeta at - line 23.
927 ########
928 use warnings 'uninitialized';
929 my ($m1, $v1, $v2, $v3, $v4);
930 our ($g1);
931
932 ($v1,$v2,$v3,$v4) = split;
933 ($v1,$v2,$v3,$v4) = split $m1;
934 ($v1,$v2,$v3,$v4) = split $m1, $m2;
935 ($v1,$v2,$v3,$v4) = split $m1, $m2, $g1;
936
937 $v1 = join $m1;
938 $v2 = join $m1, $m2;
939 $v3 = join $m1, $m2, $m3;
940 EXPECT
941 Use of uninitialized value $_ in split at - line 5.
942 Use of uninitialized value $m1 in regexp compilation at - line 6.
943 Use of uninitialized value $_ in split at - line 6.
944 Use of uninitialized value $m1 in regexp compilation at - line 7.
945 Use of uninitialized value $m2 in split at - line 7.
946 Use of uninitialized value $m1 in regexp compilation at - line 8.
947 Use of uninitialized value $g1 in split at - line 8.
948 Use of uninitialized value $m2 in split at - line 8.
949 Use of uninitialized value $m1 in join or string at - line 10.
950 Use of uninitialized value $m1 in join or string at - line 11.
951 Use of uninitialized value $m2 in join or string at - line 11.
952 Use of uninitialized value $m1 in join or string at - line 12.
953 Use of uninitialized value $m2 in join or string at - line 12.
954 Use of uninitialized value $m3 in join or string at - line 12.
955 ########
956 use warnings 'uninitialized';
957 my ($m1, $m2, @ma, $v);
958
959 our @foo1=(1,undef); chomp @foo1;
960 my  @foo2=(1,undef); chomp @foo2;
961 our @foo3=(1,undef); chop  @foo3;
962 my  @foo4=(1,undef); chop  @foo4;
963 our @foo5=(1,undef); $v = sprintf "%s%s",@foo5;
964 my  @foo6=(1,undef); $v = sprintf "%s%s",@foo6;
965 our %foo7=('foo'=>'bar','baz'=>undef); $v = sprintf "%s%s",%foo7;
966 my  %foo8=('foo'=>'bar','baz'=>undef); $v = sprintf "%s%s",%foo8;
967 our @foo9 =(1,undef); $v = sprintf "%s%s%s%s",$m1,@foo9, $ma[2];
968 my  @foo10=(1,undef); $v = sprintf "%s%s%s%s",$m2,@foo10,$ma[2];
969 our %foo11=('foo'=>'bar','baz'=>undef); $v = join '', %foo11;
970 my  %foo12=('foo'=>'bar','baz'=>undef); $v = join '', %foo12;
971 our %foo13=(1..2000,'foo'=>'bar','baz'=>undef); $v = join '', %foo13;
972 my  %foo14=(1..2000,'foo'=>'bar','baz'=>undef); $v = join '', %foo14;
973 EXPECT
974 Use of uninitialized value $foo1[1] in chomp at - line 4.
975 Use of uninitialized value $foo2[1] in chomp at - line 5.
976 Use of uninitialized value $foo3[1] in chop at - line 6.
977 Use of uninitialized value $foo4[1] in chop at - line 7.
978 Use of uninitialized value $foo5[1] in sprintf at - line 8.
979 Use of uninitialized value $foo6[1] in sprintf at - line 9.
980 Use of uninitialized value $foo7{"baz"} in sprintf at - line 10.
981 Use of uninitialized value $foo8{"baz"} in sprintf at - line 11.
982 Use of uninitialized value $m1 in sprintf at - line 12.
983 Use of uninitialized value $foo9[1] in sprintf at - line 12.
984 Use of uninitialized value in sprintf at - line 12.
985 Use of uninitialized value $m2 in sprintf at - line 13.
986 Use of uninitialized value $foo10[1] in sprintf at - line 13.
987 Use of uninitialized value in sprintf at - line 13.
988 Use of uninitialized value $foo11{"baz"} in join or string at - line 14.
989 Use of uninitialized value $foo12{"baz"} in join or string at - line 15.
990 Use of uninitialized value within %foo13 in join or string at - line 16.
991 Use of uninitialized value within %foo14 in join or string at - line 17.
992 ########
993 use warnings 'uninitialized';
994 my ($v);
995
996 undef $^A; $v = $^A + ${^FOO}; # should output '^A' not chr(1)
997 *GLOB1 = *GLOB2;
998 $v = $GLOB1 + 1;
999 $v = $GLOB2 + 1;
1000 EXPECT
1001 Use of uninitialized value $^FOO in addition (+) at - line 4.
1002 Use of uninitialized value $^A in addition (+) at - line 4.
1003 Use of uninitialized value $GLOB1 in addition (+) at - line 6.
1004 Use of uninitialized value $GLOB2 in addition (+) at - line 7.
1005 ########
1006 use warnings 'uninitialized';
1007 my ($v);
1008
1009 # check hash key is sanitised
1010 my %h = ("\0011\002\r\n\t\f\"\\abcdefghijklmnopqrstuvwxyz", undef);
1011 $v = join '', %h;
1012 EXPECT
1013 Use of uninitialized value $h{"\0011\2\r\n\t\f\"\\abcdefghijkl"...} in join or string at - line 6.
1014 ########
1015 use warnings 'uninitialized';
1016 my ($m1, $v);
1017 our ($g1);
1018
1019 $v = eval { \&$m1 };
1020 $v = eval { \&$g1 };
1021
1022 my @a;
1023 @a = splice @a, $m1, $g1;
1024 $v = 1 + splice @a, $m1, $g1;
1025
1026 my $x = bless [], 'Z';
1027 eval { $x->$m1() };
1028
1029 eval { &$m1() };
1030 eval { &$g1() };
1031
1032 warn $m1,$g1,"foo";
1033
1034 eval { die $m1, $g1 };
1035
1036 reset $m1;
1037 reset $g1;
1038 EXPECT
1039 Use of uninitialized value $m1 in subroutine dereference at - line 5.
1040 Use of uninitialized value $m1 in subroutine dereference at - line 5.
1041 Use of uninitialized value $g1 in subroutine dereference at - line 6.
1042 Use of uninitialized value $g1 in subroutine dereference at - line 6.
1043 Use of uninitialized value $m1 in splice at - line 9.
1044 Use of uninitialized value $g1 in splice at - line 9.
1045 Use of uninitialized value $m1 in splice at - line 10.
1046 Use of uninitialized value $g1 in splice at - line 10.
1047 Use of uninitialized value in addition (+) at - line 10.
1048 Use of uninitialized value $m1 in method lookup at - line 13.
1049 Use of uninitialized value $m1 in subroutine entry at - line 15.
1050 Use of uninitialized value $g1 in subroutine entry at - line 16.
1051 Use of uninitialized value $m1 in warn at - line 18.
1052 Use of uninitialized value $g1 in warn at - line 18.
1053 foo at - line 18.
1054 Use of uninitialized value $m1 in die at - line 20.
1055 Use of uninitialized value $g1 in die at - line 20.
1056 Use of uninitialized value $m1 in symbol reset at - line 22.
1057 Use of uninitialized value $g1 in symbol reset at - line 23.
1058 ########
1059 use warnings 'uninitialized';
1060 my ($m1);
1061 our ($g1);
1062
1063 open FOO;               # accesses $FOO
1064 my $foo = 'FO';
1065 open($foo."O"); # accesses $FOO
1066 open my $x;             # accesses ${*$x}
1067 open $foobar;   # accesses ${*$foobar}
1068 my $y;
1069 open $y, $m1;
1070 eval { open $y, $m1, $g1 };
1071 open $y, '<', $g1;
1072
1073 sysopen $y, $m1, $m2;
1074 sysopen $y, $m1, $g1, $m2;
1075
1076 my $old = umask;
1077 umask $m1;
1078 umask $g1;
1079 umask $old;
1080
1081 binmode STDIN, $m1;
1082 EXPECT
1083 Use of uninitialized value $FOO in open at - line 5.
1084 Use of uninitialized value in open at - line 7.
1085 Use of uninitialized value in open at - line 8.
1086 Use of uninitialized value in open at - line 9.
1087 Use of uninitialized value $m1 in open at - line 11.
1088 Use of uninitialized value $m1 in open at - line 12.
1089 Use of uninitialized value $g1 in open at - line 13.
1090 Use of uninitialized value $m2 in sysopen at - line 15.
1091 Use of uninitialized value $m1 in sysopen at - line 15.
1092 Use of uninitialized value $m2 in sysopen at - line 16.
1093 Use of uninitialized value $g1 in sysopen at - line 16.
1094 Use of uninitialized value $m1 in sysopen at - line 16.
1095 Use of uninitialized value $m1 in umask at - line 19.
1096 Use of uninitialized value $g1 in umask at - line 20.
1097 Use of uninitialized value $m1 in binmode at - line 23.
1098 Use of uninitialized value $m1 in binmode at - line 23.
1099 ########
1100 use warnings 'uninitialized';
1101 my ($m1);
1102 our ($g1);
1103
1104 eval { my $x; tie $x, $m1 };
1105
1106 eval { my $x; read    $m1, $x, $g1 };
1107 eval { my $x; read    $m1, $x, $g1, $g2 };
1108 eval { my $x; sysread $m1, $x, $g1 };
1109 eval { my $x; sysread $m1, $x, $g1, $g2 };
1110 EXPECT
1111 Use of uninitialized value $m1 in tie at - line 5.
1112 Use of uninitialized value $m1 in tie at - line 5.
1113 Use of uninitialized value $m1 in ref-to-glob cast at - line 7.
1114 Use of uninitialized value $g1 in read at - line 7.
1115 Use of uninitialized value $m1 in ref-to-glob cast at - line 8.
1116 Use of uninitialized value $g1 in read at - line 8.
1117 Use of uninitialized value $g2 in read at - line 8.
1118 Use of uninitialized value $m1 in ref-to-glob cast at - line 9.
1119 Use of uninitialized value $g1 in sysread at - line 9.
1120 Use of uninitialized value $m1 in ref-to-glob cast at - line 10.
1121 Use of uninitialized value $g1 in sysread at - line 10.
1122 Use of uninitialized value $g2 in sysread at - line 10.
1123 ########
1124 use warnings 'uninitialized';
1125 my ($m1);
1126 our ($g1, @ga);
1127
1128 printf $m1;
1129 printf STDERR "%d%d%d%d\n", $m1, $m2, $g1, $g2;
1130 printf $ga[1000];
1131 printf STDERR "FOO1:%s\n", $ga[1000];
1132 printf STDERR "FOO2:%s%s%s%s\n", $m1, $g1, $ga[1],$m2;
1133 printf STDERR "FOO3:%s%s%s\n", "X", $ga[1],"Y";
1134 EXPECT
1135 Use of uninitialized value $m1 in printf at - line 5.
1136 Use of uninitialized value $m1 in printf at - line 6.
1137 Use of uninitialized value $m2 in printf at - line 6.
1138 Use of uninitialized value $g1 in printf at - line 6.
1139 Use of uninitialized value $g2 in printf at - line 6.
1140 0000
1141 Use of uninitialized value $ga[1000] in printf at - line 7.
1142 Use of uninitialized value $ga[1000] in printf at - line 8.
1143 FOO1:
1144 Use of uninitialized value $m1 in printf at - line 9.
1145 Use of uninitialized value $g1 in printf at - line 9.
1146 Use of uninitialized value in printf at - line 9.
1147 Use of uninitialized value $m2 in printf at - line 9.
1148 FOO2:
1149 Use of uninitialized value $ga[1] in printf at - line 10.
1150 FOO3:XY
1151 ########
1152 use warnings 'uninitialized';
1153 my ($m1);
1154 our ($g1);
1155
1156 eval { my $x; seek    $x,$m1, $g1 };
1157 eval { my $x; sysseek $x,$m1, $g1 };
1158 eval { syswrite $m1, $g1 };
1159 eval { syswrite STDERR, $m1 };
1160 eval { syswrite STDERR, $m1, $g1 };
1161 eval { syswrite STDERR, $m1, $g1, $m2 };
1162 eval { my $x; flock $x, $g1 };
1163 eval { my $x; socket $x, $m1, $g1, $m2 };
1164 eval { my ($x,$y); socketpair $x, $y, $m1, $g1, $m2 };
1165 EXPECT
1166 Use of uninitialized value $x in ref-to-glob cast at - line 5.
1167 Use of uninitialized value $g1 in seek at - line 5.
1168 Use of uninitialized value $m1 in seek at - line 5.
1169 Use of uninitialized value $x in ref-to-glob cast at - line 6.
1170 Use of uninitialized value $g1 in sysseek at - line 6.
1171 Use of uninitialized value $m1 in sysseek at - line 6.
1172 Use of uninitialized value $m1 in ref-to-glob cast at - line 7.
1173 Use of uninitialized value $g1 in syswrite at - line 7.
1174 Use of uninitialized value $m1 in syswrite at - line 8.
1175 Use of uninitialized value $m1 in syswrite at - line 8.
1176 Use of uninitialized value $g1 in syswrite at - line 9.
1177 Use of uninitialized value $m1 in syswrite at - line 9.
1178 Use of uninitialized value $g1 in syswrite at - line 10.
1179 Use of uninitialized value $m1 in syswrite at - line 10.
1180 Use of uninitialized value $m2 in syswrite at - line 10.
1181 Use of uninitialized value $x in ref-to-glob cast at - line 11.
1182 Use of uninitialized value $g1 in flock at - line 11.
1183 Use of uninitialized value $m2 in socket at - line 12.
1184 Use of uninitialized value $g1 in socket at - line 12.
1185 Use of uninitialized value $m1 in socket at - line 12.
1186 Use of uninitialized value $m2 in socketpair at - line 13.
1187 Use of uninitialized value $g1 in socketpair at - line 13.
1188 Use of uninitialized value $m1 in socketpair at - line 13.
1189 ########
1190 use warnings 'uninitialized';
1191 my ($m1, $v);
1192 our ($g1);
1193
1194 stat;
1195 lstat;
1196 stat $m1;
1197 lstat $g1;
1198
1199 $v = -R $m1;
1200 $v = -W $m1;
1201 $v = -X $m1;
1202 $v = -r $m1;
1203 $v = -w $m1;
1204 $v = -x $m1;
1205 $v = -e $m1;
1206 $v = -O $m1;
1207 $v = -o $m1;
1208 $v = -z $m1;
1209 $v = -s $m1;
1210 $v = -M $m1;
1211 $v = -A $m1;
1212 $v = -C $m1;
1213 $v = -S $m1;
1214 $v = -c $m1;
1215 $v = -b $m1;
1216 $v = -f $m1;
1217 $v = -d $m1;
1218 $v = -p $m1;
1219 $v = -l $m1;
1220 $v = -u $m1;
1221 $v = -g $m1;
1222 $v = -k $m1;
1223 $v = -t $m1;
1224 $v = -T $m1;
1225 $v = -B $m1;
1226 EXPECT
1227 Use of uninitialized value $_ in stat at - line 5.
1228 Use of uninitialized value $_ in lstat at - line 6.
1229 Use of uninitialized value $m1 in stat at - line 7.
1230 Use of uninitialized value $g1 in lstat at - line 8.
1231 Use of uninitialized value $m1 in -R at - line 10.
1232 Use of uninitialized value $m1 in -W at - line 11.
1233 Use of uninitialized value $m1 in -X at - line 12.
1234 Use of uninitialized value $m1 in -r at - line 13.
1235 Use of uninitialized value $m1 in -w at - line 14.
1236 Use of uninitialized value $m1 in -x at - line 15.
1237 Use of uninitialized value $m1 in -e at - line 16.
1238 Use of uninitialized value $m1 in -o at - line 17.
1239 Use of uninitialized value $m1 in -O at - line 18.
1240 Use of uninitialized value $m1 in -z at - line 19.
1241 Use of uninitialized value $m1 in -s at - line 20.
1242 Use of uninitialized value $m1 in -M at - line 21.
1243 Use of uninitialized value $m1 in -A at - line 22.
1244 Use of uninitialized value $m1 in -C at - line 23.
1245 Use of uninitialized value $m1 in -S at - line 24.
1246 Use of uninitialized value $m1 in -c at - line 25.
1247 Use of uninitialized value $m1 in -b at - line 26.
1248 Use of uninitialized value $m1 in -f at - line 27.
1249 Use of uninitialized value $m1 in -d at - line 28.
1250 Use of uninitialized value $m1 in -p at - line 29.
1251 Use of uninitialized value $m1 in -l at - line 30.
1252 Use of uninitialized value $m1 in -l at - line 30.
1253 Use of uninitialized value $m1 in -u at - line 31.
1254 Use of uninitialized value $m1 in -g at - line 32.
1255 Use of uninitialized value $m1 in -k at - line 33.
1256 Use of uninitialized value $m1 in -t at - line 34.
1257 Use of uninitialized value $m1 in -T at - line 35.
1258 Use of uninitialized value $m1 in -B at - line 36.
1259 ########
1260 use warnings 'uninitialized';
1261 my ($m1, $v);
1262 our ($g1);
1263
1264 $v = localtime $m1;
1265 $v = gmtime $g1;
1266 EXPECT
1267 Use of uninitialized value $m1 in localtime at - line 5.
1268 Use of uninitialized value $g1 in gmtime at - line 6.
1269 ########
1270 use warnings 'uninitialized';
1271 my ($m1, $v);
1272
1273 $v = eval;
1274 $v = eval $m1;
1275 EXPECT
1276 Use of uninitialized value $_ in eval "string" at - line 4.
1277 Use of uninitialized value $_ in eval "string" at - line 4.
1278 Use of uninitialized value $_ in eval "string" at - line 4.
1279 Use of uninitialized value $m1 in eval "string" at - line 5.
1280 Use of uninitialized value $m1 in eval "string" at - line 5.
1281 Use of uninitialized value $m1 in eval "string" at - line 5.
1282 ########
1283 use warnings 'uninitialized';
1284 my ($m1);
1285
1286 exit $m1;
1287 EXPECT
1288 Use of uninitialized value $m1 in exit at - line 4.