xref: /openbsd/gnu/usr.bin/perl/t/lib/warnings/9uninit (revision cecf84d4)
1DAPM 4/2004.
2
3Test the appearance of variable names in "Use of uninitialized value"
4warnings.
5
6The following ops aren't tested, mainly because they do IO or non-portable
7stuff:
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__
23use warnings 'uninitialized';
24my ($m1, $m2, $v);
25
26$v = $m1 + 10;
27$v = 22 + $m2;
28$v = $m1 + $m2;
29EXPECT
30Use of uninitialized value $m1 in addition (+) at - line 4.
31Use of uninitialized value $m2 in addition (+) at - line 5.
32Use of uninitialized value $m2 in addition (+) at - line 6.
33Use of uninitialized value $m1 in addition (+) at - line 6.
34########
35use warnings 'uninitialized';
36use utf8;
37use open qw( :utf8 :std );
38
39$v = $à1 + 10;
40$v = 22 + $a2;
41$v = $à1 + $a2;
42EXPECT
43Use of uninitialized value $à1 in addition (+) at - line 5.
44Use of uninitialized value $a2 in addition (+) at - line 6.
45Use of uninitialized value $a2 in addition (+) at - line 7.
46Use of uninitialized value $à1 in addition (+) at - line 7.
47########
48use warnings 'uninitialized';
49my ($m1, $v);
50our ($g1, $g2);
51
52$v = $g1 + 21;
53$v = 31 + $g2;
54$v = $g1 + $g2;
55$v = $m1 + $g2;
56EXPECT
57Use of uninitialized value $g1 in addition (+) at - line 5.
58Use of uninitialized value $g2 in addition (+) at - line 6.
59Use of uninitialized value $g2 in addition (+) at - line 7.
60Use of uninitialized value $g1 in addition (+) at - line 7.
61Use of uninitialized value $g2 in addition (+) at - line 8.
62Use of uninitialized value $m1 in addition (+) at - line 8.
63########
64use warnings 'uninitialized';
65my ($m1, @ma, $v);
66
67$v = $ma[5] + 45;
68$v = 56 + $ma[6];
69$v = $ma[7] + $m1;
70$v = $ma[8] + $ma[9];
71$v = $ma[-1] + $ma[-2];
72EXPECT
73Use of uninitialized value $ma[5] in addition (+) at - line 4.
74Use of uninitialized value $ma[6] in addition (+) at - line 5.
75Use of uninitialized value $m1 in addition (+) at - line 6.
76Use of uninitialized value in addition (+) at - line 6.
77Use of uninitialized value in addition (+) at - line 7.
78Use of uninitialized value in addition (+) at - line 7.
79Use of uninitialized value in addition (+) at - line 8.
80Use of uninitialized value in addition (+) at - line 8.
81########
82use warnings 'uninitialized';
83my ($v);
84my @mau = (undef) x 258;
85my %mhu = ('foo', undef, 'bar', undef);
86
87$v = $mau[5] + 23;
88$v = $mau[-5] + 45;
89$v = 56 + $mau[6];
90$v = 78 + $mau[-6];
91$v = $mau[7] + $mau[8];
92$v = $mau[256] + $mau[257];
93$v = $mau[-1] + $mau[-2];
94$v = $mhu{foo} + $mhu{bar};
95EXPECT
96Use of uninitialized value $mau[5] in addition (+) at - line 6.
97Use of uninitialized value $mau[-5] in addition (+) at - line 7.
98Use of uninitialized value $mau[6] in addition (+) at - line 8.
99Use of uninitialized value $mau[-6] in addition (+) at - line 9.
100Use of uninitialized value $mau[8] in addition (+) at - line 10.
101Use of uninitialized value $mau[7] in addition (+) at - line 10.
102Use of uninitialized value $mau[257] in addition (+) at - line 11.
103Use of uninitialized value $mau[256] in addition (+) at - line 11.
104Use of uninitialized value $mau[-2] in addition (+) at - line 12.
105Use of uninitialized value $mau[-1] in addition (+) at - line 12.
106Use of uninitialized value $mhu{"bar"} in addition (+) at - line 13.
107Use of uninitialized value $mhu{"foo"} in addition (+) at - line 13.
108########
109use warnings 'uninitialized';
110my ($v);
111our (@ga);
112
113$v = $ga[8] + 21;
114$v = $ga[-8] + 46;
115$v = 57 + $ga[9];
116$v = 58 + $ga[-9];
117$v = $ga[10] + $ga[11];
118$v = $ga[-10] + $ga[-11];
119EXPECT
120Use of uninitialized value $ga[8] in addition (+) at - line 5.
121Use of uninitialized value $ga[-8] in addition (+) at - line 6.
122Use of uninitialized value $ga[9] in addition (+) at - line 7.
123Use of uninitialized value $ga[-9] in addition (+) at - line 8.
124Use of uninitialized value in addition (+) at - line 9.
125Use of uninitialized value in addition (+) at - line 9.
126Use of uninitialized value in addition (+) at - line 10.
127Use of uninitialized value in addition (+) at - line 10.
128########
129use warnings 'uninitialized';
130my ($v);
131our @gau = (undef) x 258;
132our %ghu = ('foo', undef, 'bar', undef);
133
134$v = $gau[8] + 46;
135$v = $gau[-8] + 47;
136$v = 57 + $gau[9];
137$v = 57 + $gau[-9];
138$v = $gau[10] + $gau[11];
139$v = $gau[256] + $gau[257];
140$v = $gau[-1] + $gau[-2];
141$v = $ghu{foo} + $ghu{bar};
142EXPECT
143Use of uninitialized value $gau[8] in addition (+) at - line 6.
144Use of uninitialized value $gau[-8] in addition (+) at - line 7.
145Use of uninitialized value $gau[9] in addition (+) at - line 8.
146Use of uninitialized value $gau[-9] in addition (+) at - line 9.
147Use of uninitialized value $gau[11] in addition (+) at - line 10.
148Use of uninitialized value $gau[10] in addition (+) at - line 10.
149Use of uninitialized value $gau[257] in addition (+) at - line 11.
150Use of uninitialized value $gau[256] in addition (+) at - line 11.
151Use of uninitialized value $gau[-2] in addition (+) at - line 12.
152Use of uninitialized value $gau[-1] in addition (+) at - line 12.
153Use of uninitialized value $ghu{"bar"} in addition (+) at - line 13.
154Use of uninitialized value $ghu{"foo"} in addition (+) at - line 13.
155########
156use warnings 'uninitialized';
157my ($v);
158our @gau = (undef) x 258;
159our %ghu = ('foo', undef, 'bar', undef);
160my @mau = (undef) x 258;
161my %mhu = ('foo', undef, 'bar', undef);
162
163my $i1 = 10;
164my $i2 = 20;
165my $i3 = 2000;
166my $k1 = 'foo';
167my $k2 = 'bar';
168my $k3 = 'baz';
169$v = $mau[$i1] + $mau[$i2];
170$v = $gau[$i1] + $gau[$i2];
171$v = $gau[$i1] + $gau[$i3];
172$v = $mhu{$k1} + $mhu{$k2};
173$v = $ghu{$k1} + $ghu{$k2};
174$v = $ghu{$k1} + $ghu{$k3};
175EXPECT
176Use of uninitialized value $mau[20] in addition (+) at - line 14.
177Use of uninitialized value $mau[10] in addition (+) at - line 14.
178Use of uninitialized value $gau[20] in addition (+) at - line 15.
179Use of uninitialized value $gau[10] in addition (+) at - line 15.
180Use of uninitialized value in addition (+) at - line 16.
181Use of uninitialized value $gau[10] in addition (+) at - line 16.
182Use of uninitialized value $mhu{"bar"} in addition (+) at - line 17.
183Use of uninitialized value $mhu{"foo"} in addition (+) at - line 17.
184Use of uninitialized value $ghu{"bar"} in addition (+) at - line 18.
185Use of uninitialized value $ghu{"foo"} in addition (+) at - line 18.
186Use of uninitialized value in addition (+) at - line 19.
187Use of uninitialized value $ghu{"foo"} in addition (+) at - line 19.
188########
189use warnings 'uninitialized';
190my ($m1, $m2, @ma, %mh, $v);
191our ($g1, $g2, @ga, %gh);
192
193$v = $ma[$m1];
194$v = $ma[$g1];
195$v = $ga[$m2];
196$v = $ga[$g2];
197
198$v = $mh{$m1};
199$v = $mh{$g1};
200$v = $gh{$m2};
201$v = $gh{$g2};
202
203$v = $m1+($m2-$g1);
204$v = $ma[$ga[3]];
205$v = $ga[$ma[4]];
206EXPECT
207Use of uninitialized value $m1 in array element at - line 5.
208Use of uninitialized value $g1 in array element at - line 6.
209Use of uninitialized value $m2 in array element at - line 7.
210Use of uninitialized value $g2 in array element at - line 8.
211Use of uninitialized value $m1 in hash element at - line 10.
212Use of uninitialized value $g1 in hash element at - line 11.
213Use of uninitialized value $m2 in hash element at - line 12.
214Use of uninitialized value $g2 in hash element at - line 13.
215Use of uninitialized value $g1 in subtraction (-) at - line 15.
216Use of uninitialized value $m2 in subtraction (-) at - line 15.
217Use of uninitialized value $m1 in addition (+) at - line 15.
218Use of uninitialized value $ga[3] in array element at - line 16.
219Use of uninitialized value $ma[4] in array element at - line 17.
220########
221use warnings 'uninitialized';
222my (@ma, %mh, $v);
223our (@ga, %gh);
224
225$v = sin $ga[1000];
226$v = sin $ma[1000];
227$v = sin $gh{foo};
228$v = sin $mh{bar};
229
230$v = sin $ga[$$];
231$v = sin $ma[$$];
232$v = sin $gh{$$};
233$v = sin $mh{$$};
234EXPECT
235Use of uninitialized value $ga[1000] in sin at - line 5.
236Use of uninitialized value $ma[1000] in sin at - line 6.
237Use of uninitialized value $gh{"foo"} in sin at - line 7.
238Use of uninitialized value $mh{"bar"} in sin at - line 8.
239Use of uninitialized value within @ga in sin at - line 10.
240Use of uninitialized value within @ma in sin at - line 11.
241Use of uninitialized value within %gh in sin at - line 12.
242Use of uninitialized value within %mh in sin at - line 13.
243########
244use warnings 'uninitialized';
245my (@mat, %mht, $v);
246sub X::TIEARRAY { bless [], 'X' }
247sub X::TIEHASH { bless [], 'X' }
248sub X::FETCH { undef }
249tie @mat, 'X';
250tie %mht, 'X';
251my $key1 = 'akey';
252my $key2 = 'bkey';
253my $index1 = 33;
254my $index2 = 55;
255
256$v = sin $mat[0];
257$v = $mat[0] + $mat[1];
258$v = sin $mat[1000];
259$v = $mat[1000] + $mat[1001];
260
261$v = sin $mat[$index1];
262$v = $mat[$index1] + $mat[$index2];
263
264$v = sin $mht{foo};
265$v = $mht{foo} + $mht{bar};
266
267$v = sin $mht{$key1};
268$v = $mht{$key1} + $mht{$key2};
269
270$v = $1+1;
271EXPECT
272Use of uninitialized value $mat[0] in sin at - line 13.
273Use of uninitialized value in addition (+) at - line 14.
274Use of uninitialized value in addition (+) at - line 14.
275Use of uninitialized value $mat[1000] in sin at - line 15.
276Use of uninitialized value in addition (+) at - line 16.
277Use of uninitialized value in addition (+) at - line 16.
278Use of uninitialized value within @mat in sin at - line 18.
279Use of uninitialized value in addition (+) at - line 19.
280Use of uninitialized value in addition (+) at - line 19.
281Use of uninitialized value $mht{"foo"} in sin at - line 21.
282Use of uninitialized value in addition (+) at - line 22.
283Use of uninitialized value in addition (+) at - line 22.
284Use of uninitialized value within %mht in sin at - line 24.
285Use of uninitialized value in addition (+) at - line 25.
286Use of uninitialized value in addition (+) at - line 25.
287Use of uninitialized value $1 in addition (+) at - line 27.
288########
289use warnings 'uninitialized';
290my ($m1);
291our ($g1, @ga);
292
293print $ga[1000];
294print STDERR $ga[1000];
295print STDERR $m1, $g1, $ga[1],$m2;
296print STDERR "", $ga[1],"";
297EXPECT
298Use of uninitialized value in print at - line 5.
299Use of uninitialized value in print at - line 6.
300Use of uninitialized value $m1 in print at - line 7.
301Use of uninitialized value $g1 in print at - line 7.
302Use of uninitialized value in print at - line 7.
303Use of uninitialized value $m2 in print at - line 7.
304Use of uninitialized value in print at - line 8.
305########
306use warnings 'uninitialized';
307my ($m1);
308our ($g1);
309
310close $m1;	# exercises rv2gv
311close $g1;	# exercises rv2gv
312close undef;	# exercises rv2gv
313EXPECT
314Use of uninitialized value $m1 in ref-to-glob cast at - line 5.
315Use of uninitialized value $g1 in ref-to-glob cast at - line 6.
316Use of uninitialized value in ref-to-glob cast at - line 7.
317########
318use warnings 'uninitialized';
319my ($m1, $m2, $v);
320our ($g1, $g2);
321
322$v = $$m1;
323$v = $$g1;
324
325$v = @$m1;
326$v = @$g1;
327$v = %$m2;
328$v = %$g2;
329
330$v = ${"foo.bar"}+1;
331$v = ${"foo$m1"}+1;
332$v = ${"foo$g1"}+1;
333EXPECT
334Use of uninitialized value $m1 in scalar dereference at - line 5.
335Use of uninitialized value $g1 in scalar dereference at - line 6.
336Use of uninitialized value $m1 in array dereference at - line 8.
337Use of uninitialized value $g1 in array dereference at - line 9.
338Use of uninitialized value $m2 in hash dereference at - line 10.
339Use of uninitialized value $g2 in hash dereference at - line 11.
340Use of uninitialized value in addition (+) at - line 13.
341Use of uninitialized value $m1 in concatenation (.) or string at - line 14.
342Use of uninitialized value in addition (+) at - line 14.
343Use of uninitialized value $g1 in concatenation (.) or string at - line 15.
344Use of uninitialized value in addition (+) at - line 15.
345########
346use warnings 'uninitialized';
347my ($m1, $v);
348our ($g1);
349
350$v = $m1 | $m2;
351$v = $m1 & $m2;
352$v = $m1 ^ $m2;
353$v = ~$m1;
354
355$v = $g1 | $g2;
356$v = $g1 & $g2;
357$v = $g1 ^ $g2;
358$v = ~$g1;
359EXPECT
360Use of uninitialized value $m1 in bitwise or (|) at - line 5.
361Use of uninitialized value $m2 in bitwise or (|) at - line 5.
362Use of uninitialized value $m1 in bitwise and (&) at - line 6.
363Use of uninitialized value $m2 in bitwise and (&) at - line 6.
364Use of uninitialized value $m1 in bitwise xor (^) at - line 7.
365Use of uninitialized value $m2 in bitwise xor (^) at - line 7.
366Use of uninitialized value $m1 in 1's complement (~) at - line 8.
367Use of uninitialized value $g1 in bitwise or (|) at - line 10.
368Use of uninitialized value $g2 in bitwise or (|) at - line 10.
369Use of uninitialized value $g1 in bitwise and (&) at - line 11.
370Use of uninitialized value $g2 in bitwise and (&) at - line 11.
371Use of uninitialized value $g1 in bitwise xor (^) at - line 12.
372Use of uninitialized value $g2 in bitwise xor (^) at - line 12.
373Use of uninitialized value $g1 in 1's complement (~) at - line 13.
374########
375use warnings 'uninitialized';
376my ($v);
377
378my  $tmp1; $v = $tmp1++; # (doesn't warn)
379our $tmp2; $v = $tmp2++; # (doesn't warn)
380my  $tmp3; $v = ++$tmp1; # (doesn't warn)
381our $tmp4; $v = ++$tmp2; # (doesn't warn)
382
383my  $tmp5; $v = $tmp5--; # (doesn't warn)
384our $tmp6; $v = $tmp6--; # (doesn't warn)
385my  $tmp7; $v = --$tmp7; # (doesn't warn)
386our $tmp8; $v = --$tmp8; # (doesn't warn)
387EXPECT
388########
389use warnings 'uninitialized';
390
391my $s1; chomp $s1;
392my $s2; chop  $s2;
393my ($s3,$s4); chomp ($s3,$s4);
394my ($s5,$s6); chop  ($s5,$s6);
395EXPECT
396Use of uninitialized value $s1 in scalar chomp at - line 3.
397Use of uninitialized value $s2 in scalar chop at - line 4.
398Use of uninitialized value $s3 in chomp at - line 5.
399Use of uninitialized value $s4 in chomp at - line 5.
400Use of uninitialized value $s5 in chop at - line 6.
401Use of uninitialized value $s6 in chop at - line 6.
402########
403use warnings 'uninitialized';
404my ($m1);
405
406local $/ =\$m1;
407my $x = "abc";
408chomp $x; chop $x;
409my $y;
410chomp ($x, $y); chop ($x, $y);
411EXPECT
412Use of uninitialized value $m1 in scalar assignment at - line 4.
413Use of uninitialized value $m1 in scalar assignment at - line 4.
414Setting $/ to a reference to zero as a form of slurp is deprecated, treating as undef at - line 4.
415Use of uninitialized value $y in chop at - line 8.
416########
417use warnings 'uninitialized';
418my ($m1, @ma, %mh);
419our ($g1);
420
421delete $ma[$m1];
422delete @ma[$m1, $g1];
423delete $mh{$m1};
424delete @mh{$m1, $g1};
425EXPECT
426Use of uninitialized value $m1 in delete at - line 5.
427Use of uninitialized value $m1 in delete at - line 6.
428Use of uninitialized value $g1 in delete at - line 6.
429Use of uninitialized value $m1 in delete at - line 7.
430Use of uninitialized value $m1 in delete at - line 8.
431Use of uninitialized value $g1 in delete at - line 8.
432########
433use warnings 'uninitialized';
434my ($m1, @ma, %mh);
435our ($g1);
436
437my @a = @ma[$m1, $g1];
438@a = (4,5)[$m1, $g1];
439@a = @mh{$m1, $g1};
440EXPECT
441Use of uninitialized value $m1 in array slice at - line 5.
442Use of uninitialized value $g1 in array slice at - line 5.
443Use of uninitialized value $m1 in list slice at - line 6.
444Use of uninitialized value $g1 in list slice at - line 6.
445Use of uninitialized value $m1 in hash slice at - line 7.
446Use of uninitialized value $g1 in hash slice at - line 7.
447########
448use warnings 'uninitialized';
449my ($m1, @ma, %mh, $v);
450our ($g1, @ga, %gh);
451
452$v = exists $ma[$m1];
453$v = exists $ga[$g1];
454$v = exists $mh{$m1};
455$v = exists $gh{$g1};
456EXPECT
457Use of uninitialized value $m1 in exists at - line 5.
458Use of uninitialized value $g1 in exists at - line 6.
459Use of uninitialized value $m1 in exists at - line 7.
460Use of uninitialized value $g1 in exists at - line 8.
461########
462use warnings 'uninitialized';
463my ($m1, $m2);
464my ($v, @a);
465my ($t, $u) = (1, 1);
466
467local $.;
468
469@ma = (1   .. 2);
470@ma = ($t  .. 2);
471@ma = ($m1 .. 2);
472@ma = (1   .. $u);
473@ma = (1   .. $m2);
474
475@ma = (1   ... 2);
476@ma = ($t  ... 2);
477@ma = ($m1 ... 2);
478@ma = (1   ... $u);
479@ma = (1   ... $m2);
480
481$v = (1   .. 2);
482$v = ($t  .. 2);
483$v = ($m1 .. 2);
484$v = (1   .. $u);
485$v = (1   .. $m2);
486
487$v = (1   ... 2);
488$v = ($t  ... 2);
489$v = ($m1 ... 2);
490$v = (1   ... $u);
491$v = (1   ... $m2);
492EXPECT
493Use of uninitialized value $m1 in range (or flop) at - line 10.
494Use of uninitialized value $m2 in range (or flop) at - line 12.
495Use of uninitialized value $m1 in range (or flop) at - line 16.
496Use of uninitialized value $m2 in range (or flop) at - line 18.
497Use of uninitialized value $. in range (or flip) at - line 20.
498Use of uninitialized value $. in range (or flop) at - line 21.
499Use of uninitialized value $. in range (or flip) at - line 23.
500Use of uninitialized value $. in range (or flip) at - line 24.
501Use of uninitialized value $. in range (or flip) at - line 26.
502Use of uninitialized value $. in range (or flip) at - line 29.
503Use of uninitialized value $. in range (or flip) at - line 30.
504########
505use warnings 'uninitialized';
506my ($m1, $m2);
507my ($v, @a);
508my ($t, $u) = (1, 1);
509
510@ma = ($t  .. $u);
511@ma = ($m1 .. $u);
512@ma = ($t  .. $m2);
513@ma = ($m1 .. $m2);
514
515@ma = ($t  ... $u);
516@ma = ($m1 ... $u);
517@ma = ($t  ... $m2);
518@ma = ($m1 ... $m2);
519
520$v = ($t  .. $u);
521$v = ($m1 .. $u);
522$v = ($t  .. $m2);
523$v = ($m1 .. $m2);
524
525$v = ($t  ... $u);
526$v = ($m1 ... $u);
527$v = ($t  ... $m2);
528$v = ($m1 ... $m2);
529EXPECT
530Use of uninitialized value $m1 in range (or flop) at - line 7.
531Use of uninitialized value $m2 in range (or flop) at - line 8.
532Use of uninitialized value $m1 in range (or flop) at - line 9.
533Use of uninitialized value $m2 in range (or flop) at - line 9.
534Use of uninitialized value $m1 in range (or flop) at - line 12.
535Use of uninitialized value $m2 in range (or flop) at - line 13.
536Use of uninitialized value $m1 in range (or flop) at - line 14.
537Use of uninitialized value $m2 in range (or flop) at - line 14.
538########
539use warnings 'uninitialized';
540my ($m1, $v);
541our ($g1);
542
543my ($x1,$x2);
544$v = $x1 << $m1;
545$v = $x2 << $g1;
546EXPECT
547Use of uninitialized value $m1 in left bitshift (<<) at - line 6.
548Use of uninitialized value $x1 in left bitshift (<<) at - line 6.
549Use of uninitialized value $g1 in left bitshift (<<) at - line 7.
550Use of uninitialized value $x2 in left bitshift (<<) at - line 7.
551########
552use warnings 'uninitialized';
553my ($m1, $m2, $v);
554our ($g1, $g2);
555
556use integer;
557$v = $m1 + $g1;
558$v = $m1 - $g1;
559$v = $m1 * $g1;
560eval {$v = $m1 / $g1};
561$v = $m2 / 2;
562eval {$v = $m1 % $g1};
563$v = $m2 % 2;
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;
572EXPECT
573Use of uninitialized value $g1 in integer addition (+) at - line 6.
574Use of uninitialized value $m1 in integer addition (+) at - line 6.
575Use of uninitialized value $g1 in integer subtraction (-) at - line 7.
576Use of uninitialized value $m1 in integer subtraction (-) at - line 7.
577Use of uninitialized value $g1 in integer multiplication (*) at - line 8.
578Use of uninitialized value $m1 in integer multiplication (*) at - line 8.
579Use of uninitialized value $g1 in integer division (/) at - line 9.
580Use of uninitialized value $m2 in integer division (/) at - line 10.
581Use of uninitialized value $g1 in integer modulus (%) at - line 11.
582Use of uninitialized value $m1 in integer modulus (%) at - line 11.
583Use of uninitialized value $m2 in integer modulus (%) at - line 12.
584Use of uninitialized value $g1 in integer lt (<) at - line 13.
585Use of uninitialized value $m1 in integer lt (<) at - line 13.
586Use of uninitialized value $g1 in integer gt (>) at - line 14.
587Use of uninitialized value $m1 in integer gt (>) at - line 14.
588Use of uninitialized value $g1 in integer le (<=) at - line 15.
589Use of uninitialized value $m1 in integer le (<=) at - line 15.
590Use of uninitialized value $g1 in integer ge (>=) at - line 16.
591Use of uninitialized value $m1 in integer ge (>=) at - line 16.
592Use of uninitialized value $g1 in integer eq (==) at - line 17.
593Use of uninitialized value $m1 in integer eq (==) at - line 17.
594Use of uninitialized value $g1 in integer ne (!=) at - line 18.
595Use of uninitialized value $m1 in integer ne (!=) at - line 18.
596Use of uninitialized value $g1 in integer comparison (<=>) at - line 19.
597Use of uninitialized value $m1 in integer comparison (<=>) at - line 19.
598Use of uninitialized value $m1 in integer negation (-) at - line 20.
599########
600use warnings 'uninitialized';
601my ($m1, $m2, $v);
602our ($g1, $g2);
603
604$v = int($g1);
605$v = abs($g2);
606EXPECT
607Use of uninitialized value $g1 in int at - line 5.
608Use of uninitialized value $g2 in abs at - line 6.
609########
610use warnings 'uninitialized';
611my ($m1, $m2, $v);
612our ($g1);
613
614$v = pack $m1;
615$v = pack "i*", $m2, $g1, $g2;
616my @unpack = unpack $m1, $m2;
617EXPECT
618Use of uninitialized value $m1 in pack at - line 5.
619Use of uninitialized value $m2 in pack at - line 6.
620Use of uninitialized value $g1 in pack at - line 6.
621Use of uninitialized value $g2 in pack at - line 6.
622Use of uninitialized value $m1 in unpack at - line 7.
623Use of uninitialized value $m2 in unpack at - line 7.
624########
625use warnings 'uninitialized';
626my ($m1);
627our ($g1);
628
629my @sort;
630@sort = sort $m1, $g1;
631@sort = sort {$a <=> $b} $m1, $g1;
632sub sortf {$a-1 <=> $b-1};
633@sort = sort  &sortf, $m1, $g1;
634@sort = sort { undef } 1, 2;
635sub frobnicate($$) { undef }
636@sort = sort frobnicate 1, 2;
637@sort = sort pyfg 1, 2;
638@sort = sort pyfgc 1, 2;
639no warnings;
640sub pyfg { undef }
641sub pyfgc($$) { undef }
642use warnings;
643sub dog {}
644sub dogwood($$) {}
645@sort = sort dog     1,2;
646@sort = sort dogwood 1,2;
647EXPECT
648Use of uninitialized value $m1 in sort at - line 6.
649Use of uninitialized value $g1 in sort at - line 6.
650Use of uninitialized value $m1 in sort at - line 6.
651Use of uninitialized value $g1 in sort at - line 6.
652Use of uninitialized value $m1 in sort at - line 7.
653Use of uninitialized value $g1 in sort at - line 7.
654Use of uninitialized value $m1 in sort at - line 7.
655Use of uninitialized value $g1 in sort at - line 7.
656Use of uninitialized value $a in subtraction (-) at - line 8.
657Use of uninitialized value $b in subtraction (-) at - line 8.
658Use of uninitialized value $m1 in sort at - line 9.
659Use of uninitialized value $g1 in sort at - line 9.
660Use of uninitialized value $m1 in sort at - line 9.
661Use of uninitialized value $m1 in sort at - line 9.
662Use of uninitialized value $g1 in sort at - line 9.
663Use of uninitialized value $g1 in sort at - line 9.
664Use of uninitialized value in sort at - line 10.
665Use of uninitialized value in sort at - line 12.
666Use of uninitialized value in sort at - line 13.
667Use of uninitialized value in sort at - line 14.
668Use of uninitialized value in sort at - line 21.
669Use of uninitialized value in sort at - line 22.
670########
671my $nan = sin 9**9**9;
672if ($nan == $nan) {
673    print <<EOM ;
674SKIPPED
675# No nan support
676EOM
677    exit ;
678}
679use warnings 'uninitialized';
680# The optimised {$a<=>$b} case should behave the same way as unoptimised.
681@sort = sort { ($a)[0] <=> $b } 1, $nan;
682@sort = sort {  $a     <=> $b } 1, $nan;
683EXPECT
684Use of uninitialized value in sort at - line 11.
685Use of uninitialized value in sort at - line 12.
686########
687use warnings 'uninitialized';
688my ($m1, $m2, $v);
689our ($g1);
690
691eval { $v = $m1 / $g1 };
692$v = $m2 / 2;
693eval { $v = $m1 % $g1 };
694$v = $m2 % 2;
695$v = $m1 == $g1;
696$v = $m1 >= $g1;
697$v = $m1 >  $g1;
698$v = $m1 <= $g1;
699$v = $m1 <  $g1;
700$v = $m1 *  $g1;
701$v = $m1 <=>$g1;
702$v = $m1 != $g1;
703$v = $m1   -$g1;
704$v = $m1 ** $g1;
705$v = $m1 +  $g1;
706$v = $m1 -  $g1;
707EXPECT
708Use of uninitialized value $g1 in division (/) at - line 5.
709Use of uninitialized value $m1 in division (/) at - line 5.
710Use of uninitialized value $m2 in division (/) at - line 6.
711Use of uninitialized value $g1 in modulus (%) at - line 7.
712Use of uninitialized value $m1 in modulus (%) at - line 7.
713Use of uninitialized value $m2 in modulus (%) at - line 8.
714Use of uninitialized value $g1 in numeric eq (==) at - line 9.
715Use of uninitialized value $m1 in numeric eq (==) at - line 9.
716Use of uninitialized value $g1 in numeric ge (>=) at - line 10.
717Use of uninitialized value $m1 in numeric ge (>=) at - line 10.
718Use of uninitialized value $g1 in numeric gt (>) at - line 11.
719Use of uninitialized value $m1 in numeric gt (>) at - line 11.
720Use of uninitialized value $g1 in numeric le (<=) at - line 12.
721Use of uninitialized value $m1 in numeric le (<=) at - line 12.
722Use of uninitialized value $g1 in numeric lt (<) at - line 13.
723Use of uninitialized value $m1 in numeric lt (<) at - line 13.
724Use of uninitialized value $g1 in multiplication (*) at - line 14.
725Use of uninitialized value $m1 in multiplication (*) at - line 14.
726Use of uninitialized value $g1 in numeric comparison (<=>) at - line 15.
727Use of uninitialized value $m1 in numeric comparison (<=>) at - line 15.
728Use of uninitialized value $g1 in numeric ne (!=) at - line 16.
729Use of uninitialized value $m1 in numeric ne (!=) at - line 16.
730Use of uninitialized value $g1 in subtraction (-) at - line 17.
731Use of uninitialized value $m1 in subtraction (-) at - line 17.
732Use of uninitialized value $g1 in exponentiation (**) at - line 18.
733Use of uninitialized value $m1 in exponentiation (**) at - line 18.
734Use of uninitialized value $g1 in addition (+) at - line 19.
735Use of uninitialized value $m1 in addition (+) at - line 19.
736Use of uninitialized value $g1 in subtraction (-) at - line 20.
737Use of uninitialized value $m1 in subtraction (-) at - line 20.
738########
739use warnings 'uninitialized';
740sub TIESCALAR{bless[]}
741sub FETCH { undef }
742
743tie my $m1, "";
744my $v;
745$v = $m1 + $m1;
746$v = $m1 - $m1;
747no warnings;
748$v = $m1 + $m1;
749$v = $m1 - $m1;
750EXPECT
751Use of uninitialized value $m1 in addition (+) at - line 7.
752Use of uninitialized value $m1 in addition (+) at - line 7.
753Use of uninitialized value $m1 in subtraction (-) at - line 8.
754Use of uninitialized value $m1 in subtraction (-) at - line 8.
755########
756use warnings 'uninitialized';
757my ($m1, $v);
758our ($g1);
759
760$v = *global1{$m1};
761$v = prototype $g1;
762$v = bless [], $g1;
763$v = `$m1`;
764
765$v = $m1 . $g1;
766EXPECT
767Use of uninitialized value $m1 in glob elem at - line 5.
768Use of uninitialized value $g1 in subroutine prototype at - line 6.
769Use of uninitialized value $g1 in bless at - line 7.
770Use of uninitialized value $m1 in quoted execution (``, qx) at - line 8.
771Use of uninitialized value $m1 in concatenation (.) or string at - line 10.
772Use of uninitialized value $g1 in concatenation (.) or string at - line 10.
773########
774use warnings 'uninitialized';
775my ($m1);
776our ($g1, $g2);
777
778/y/;
779/$m1/;
780/$g1/;
781
782s/y/z/;		undef $_;
783s/$m1/z/;	undef $_;
784s//$g1/;	undef $_;
785s/$m1/$g1/;	undef $_;
786tr/x/y/;	undef $_;
787tr/x/y/r;	undef $_;
788
789my $_;
790/y/;
791/$m1/;
792/$g1/;
793s/y/z/;		undef $_;
794s/$m1/z/;	undef $_;
795s//$g1/;	undef $_;
796s/$m1/$g1/;	undef $_;
797tr/x/y/;	undef $_;
798tr/x/y/r;	undef $_;
799
800$g2 =~ /y/;
801$g2 =~ /$m1/;
802$g2 =~ /$g1/;
803$g2 =~ s/y/z/;		undef $g2;
804$g2 =~ s/$m1/z/;	undef $g2;
805$g2 =~ s//$g1/;		undef $g2;
806$g2 =~ s/$m1/$g1/;	undef $g2;
807$g2 =~ tr/x/y/;		undef $g2; # XXX can't extract var name yet
808$g2 =~ tr/x/y/r;	undef $g2; # XXX can't extract var name yet
809
810my $foo = "abc";
811$foo =~ /$m1/;
812$foo =~ /$g1/;
813$foo =~ s/y/z/;
814$foo =~ s/$m1/z/;
815$foo =~ s//$g1/;
816$foo =~ s/$m1/$g1/;
817$foo =~ s/./$m1/e;
818undef $g1;
819$m1 = '$g1';
820$foo =~ s//$m1/ee;
821EXPECT
822Use of my $_ is experimental at - line 16.
823Use of uninitialized value $_ in pattern match (m//) at - line 5.
824Use of uninitialized value $m1 in regexp compilation at - line 6.
825Use of uninitialized value $_ in pattern match (m//) at - line 6.
826Use of uninitialized value $g1 in regexp compilation at - line 7.
827Use of uninitialized value $_ in pattern match (m//) at - line 7.
828Use of uninitialized value $_ in substitution (s///) at - line 9.
829Use of uninitialized value $m1 in regexp compilation at - line 10.
830Use of uninitialized value $_ in substitution (s///) at - line 10.
831Use of uninitialized value $_ in substitution (s///) at - line 10.
832Use of uninitialized value $_ in substitution (s///) at - line 11.
833Use of uninitialized value $_ in substitution (s///) at - line 11.
834Use of uninitialized value $g1 in substitution iterator at - line 11.
835Use of uninitialized value $m1 in regexp compilation at - line 12.
836Use of uninitialized value $_ in substitution (s///) at - line 12.
837Use of uninitialized value $_ in substitution (s///) at - line 12.
838Use of uninitialized value $g1 in substitution iterator at - line 12.
839Use of uninitialized value $_ in transliteration (tr///) at - line 13.
840Use of uninitialized value $_ in transliteration (tr///) at - line 14.
841Use of uninitialized value $_ in pattern match (m//) at - line 17.
842Use of uninitialized value $m1 in regexp compilation at - line 18.
843Use of uninitialized value $_ in pattern match (m//) at - line 18.
844Use of uninitialized value $g1 in regexp compilation at - line 19.
845Use of uninitialized value $_ in pattern match (m//) at - line 19.
846Use of uninitialized value $_ in substitution (s///) at - line 20.
847Use of uninitialized value $m1 in regexp compilation at - line 21.
848Use of uninitialized value $_ in substitution (s///) at - line 21.
849Use of uninitialized value $_ in substitution (s///) at - line 21.
850Use of uninitialized value $_ in substitution (s///) at - line 22.
851Use of uninitialized value $_ in substitution (s///) at - line 22.
852Use of uninitialized value $g1 in substitution iterator at - line 22.
853Use of uninitialized value $m1 in regexp compilation at - line 23.
854Use of uninitialized value $_ in substitution (s///) at - line 23.
855Use of uninitialized value $_ in substitution (s///) at - line 23.
856Use of uninitialized value $g1 in substitution iterator at - line 23.
857Use of uninitialized value $_ in transliteration (tr///) at - line 24.
858Use of uninitialized value $_ in transliteration (tr///) at - line 25.
859Use of uninitialized value $g2 in pattern match (m//) at - line 27.
860Use of uninitialized value $m1 in regexp compilation at - line 28.
861Use of uninitialized value $g2 in pattern match (m//) at - line 28.
862Use of uninitialized value $g1 in regexp compilation at - line 29.
863Use of uninitialized value $g2 in pattern match (m//) at - line 29.
864Use of uninitialized value $g2 in substitution (s///) at - line 30.
865Use of uninitialized value $m1 in regexp compilation at - line 31.
866Use of uninitialized value $g2 in substitution (s///) at - line 31.
867Use of uninitialized value $g2 in substitution (s///) at - line 31.
868Use of uninitialized value $g2 in substitution (s///) at - line 32.
869Use of uninitialized value $g2 in substitution (s///) at - line 32.
870Use of uninitialized value $g1 in substitution iterator at - line 32.
871Use of uninitialized value $m1 in regexp compilation at - line 33.
872Use of uninitialized value $g2 in substitution (s///) at - line 33.
873Use of uninitialized value $g2 in substitution (s///) at - line 33.
874Use of uninitialized value $g1 in substitution iterator at - line 33.
875Use of uninitialized value in transliteration (tr///) at - line 34.
876Use of uninitialized value in transliteration (tr///) at - line 35.
877Use of uninitialized value $m1 in regexp compilation at - line 38.
878Use of uninitialized value $g1 in regexp compilation at - line 39.
879Use of uninitialized value $m1 in regexp compilation at - line 41.
880Use of uninitialized value $g1 in substitution iterator at - line 42.
881Use of uninitialized value $m1 in regexp compilation at - line 43.
882Use of uninitialized value $g1 in substitution iterator at - line 43.
883Use of uninitialized value $m1 in substitution (s///) at - line 44.
884Use of uninitialized value in substitution iterator at - line 47.
885########
886use warnings 'uninitialized';
887my ($m1);
888
889{ my $foo = "abc"; (substr($foo,0,0)) = ($m1) }
890EXPECT
891Use of uninitialized value $m1 in list assignment at - line 4.
892########
893use warnings 'uninitialized';
894our ($g1);
895
896study;
897study $g1;
898EXPECT
899Use of uninitialized value $_ in study at - line 4.
900Use of uninitialized value $g1 in study at - line 5.
901########
902use warnings 'uninitialized';
903my ($m1);
904
905pos()=0;
906pos($m1)=0;
907EXPECT
908Use of uninitialized value $_ in scalar assignment at - line 4.
909Use of uninitialized value $m1 in scalar assignment at - line 5.
910########
911use warnings 'uninitialized';
912my ($m1);
913our ($g1);
914
915$v = pos($m1) + 1;
916$v = pos($g1) + 1;
917$m1 = 0;
918$g1 = "";
919$v = pos($m1) + 1;
920$v = pos($g1) + 1;
921EXPECT
922Use of uninitialized value in addition (+) at - line 5.
923Use of uninitialized value in addition (+) at - line 6.
924Use of uninitialized value in addition (+) at - line 9.
925Use of uninitialized value in addition (+) at - line 10.
926########
927use warnings 'uninitialized';
928my ($m1);
929
930{ my $x = "a" x $m1 }		# NB LHS of repeat does not warn
931{ my @x = ("a") x $m1 }
932EXPECT
933Use of uninitialized value $m1 in repeat (x) at - line 4.
934Use of uninitialized value $m1 in repeat (x) at - line 5.
935########
936use warnings 'uninitialized';
937my ($m1, $v);
938our ($g1);
939
940$v = "$m1";
941
942$v = $m1 lt $g1;
943$v = $m1 le $g1;
944$v = $m1 gt $g1;
945$v = $m1 ge $g1;
946$v = $m1 eq $g1;
947$v = $m1 ne $g1;
948$v = $m1 cmp $g1;
949EXPECT
950Use of uninitialized value $m1 in string at - line 5.
951Use of uninitialized value $m1 in string lt at - line 7.
952Use of uninitialized value $g1 in string lt at - line 7.
953Use of uninitialized value $m1 in string le at - line 8.
954Use of uninitialized value $g1 in string le at - line 8.
955Use of uninitialized value $m1 in string gt at - line 9.
956Use of uninitialized value $g1 in string gt at - line 9.
957Use of uninitialized value $m1 in string ge at - line 10.
958Use of uninitialized value $g1 in string ge at - line 10.
959Use of uninitialized value $m1 in string eq at - line 11.
960Use of uninitialized value $g1 in string eq at - line 11.
961Use of uninitialized value $m1 in string ne at - line 12.
962Use of uninitialized value $g1 in string ne at - line 12.
963Use of uninitialized value $m1 in string comparison (cmp) at - line 13.
964Use of uninitialized value $g1 in string comparison (cmp) at - line 13.
965########
966use warnings 'uninitialized';
967my ($m1, $v);
968our ($g1);
969
970$v = atan2($m1,$g1);
971$v = sin $m1;
972$v = cos $m1;
973$v = rand $m1;
974$v = srand $m1;
975$v = exp $m1;
976$v = eval {log $m1};
977$v = sqrt $m1;
978$v = hex $m1;
979$v = oct $m1;
980$v = oct;
981$v = length; # does not warn
982EXPECT
983Use of uninitialized value $g1 in atan2 at - line 5.
984Use of uninitialized value $m1 in atan2 at - line 5.
985Use of uninitialized value $m1 in sin at - line 6.
986Use of uninitialized value $m1 in cos at - line 7.
987Use of uninitialized value $m1 in rand at - line 8.
988Use of uninitialized value $m1 in srand at - line 9.
989Use of uninitialized value $m1 in exp at - line 10.
990Use of uninitialized value $m1 in log at - line 11.
991Use of uninitialized value $m1 in sqrt at - line 12.
992Use of uninitialized value $m1 in hex at - line 13.
993Use of uninitialized value $m1 in oct at - line 14.
994Use of uninitialized value $_ in oct at - line 15.
995########
996use warnings 'uninitialized';
997my ($m1, $v);
998our ($g1);
999
1000$v = substr $m1, $g1;
1001$v = substr $m1, $g1, $m2;
1002$v = substr $m1, $g1, $m2, $g2;	undef $m1;
1003substr($m1, $g1) = $g2;		undef $m1; # NB global2
1004substr($m1, $g1, $m2) = $g2;	undef $m1; # isn't identified
1005
1006$v = eval {vec ($m1, $g1, $m2)};
1007eval {vec ($m1, $g1, $m2) = $g2};	undef $m1; # ditto
1008
1009$v = index  $m1, $m2;
1010$v = index  $m1, $m2, $g1;
1011$v = rindex $m1, $m2;
1012$v = rindex $m1, $m2, $g1;
1013EXPECT
1014Use of uninitialized value $g1 in substr at - line 5.
1015Use of uninitialized value $m1 in substr at - line 5.
1016Use of uninitialized value $m2 in substr at - line 6.
1017Use of uninitialized value $g1 in substr at - line 6.
1018Use of uninitialized value $m1 in substr at - line 6.
1019Use of uninitialized value $m2 in substr at - line 7.
1020Use of uninitialized value $g1 in substr at - line 7.
1021Use of uninitialized value $g2 in substr at - line 7.
1022Use of uninitialized value $m1 in substr at - line 7.
1023Use of uninitialized value $g1 in substr at - line 8.
1024Use of uninitialized value $g2 in substr at - line 8.
1025Use of uninitialized value $m1 in substr at - line 8.
1026Use of uninitialized value $m2 in substr at - line 9.
1027Use of uninitialized value $g1 in substr at - line 9.
1028Use of uninitialized value $g2 in substr at - line 9.
1029Use of uninitialized value $m1 in substr at - line 9.
1030Use of uninitialized value $m2 in vec at - line 11.
1031Use of uninitialized value $g1 in vec at - line 11.
1032Use of uninitialized value $m1 in vec at - line 11.
1033Use of uninitialized value $m2 in vec at - line 12.
1034Use of uninitialized value $g1 in vec at - line 12.
1035Use of uninitialized value $m1 in index at - line 14.
1036Use of uninitialized value $m2 in index at - line 14.
1037Use of uninitialized value $g1 in index at - line 15.
1038Use of uninitialized value $m1 in index at - line 15.
1039Use of uninitialized value $m2 in index at - line 15.
1040Use of uninitialized value $m1 in rindex at - line 16.
1041Use of uninitialized value $m2 in rindex at - line 16.
1042Use of uninitialized value $g1 in rindex at - line 17.
1043Use of uninitialized value $m1 in rindex at - line 17.
1044Use of uninitialized value $m2 in rindex at - line 17.
1045########
1046use warnings 'uninitialized';
1047my ($m1, $v);
1048our ($g1);
1049
1050$v = sprintf $m1;
1051$v = sprintf '%d%d%d%d', $m1, $m2, $g1, $g2;
1052my $m3; eval {formline $m3 };
1053formline '@<<@<<@<<@<<', $m1, $m2, $g1, $g2;
1054EXPECT
1055Use of uninitialized value $m1 in sprintf at - line 5.
1056Use of uninitialized value $m1 in sprintf at - line 6.
1057Use of uninitialized value $m2 in sprintf at - line 6.
1058Use of uninitialized value $g1 in sprintf at - line 6.
1059Use of uninitialized value $g2 in sprintf at - line 6.
1060Use of uninitialized value $m3 in formline at - line 7.
1061Use of uninitialized value $m1 in formline at - line 8.
1062Use of uninitialized value $m2 in formline at - line 8.
1063Use of uninitialized value $g1 in formline at - line 8.
1064Use of uninitialized value $g2 in formline at - line 8.
1065########
1066# SKIP ? !$Config{d_crypt}
1067use warnings 'uninitialized';
1068my ($m1, $v);
1069our ($g1);
1070
1071$v = crypt $m1, $g1;
1072
1073$v = ord;
1074$v = ord $m1;
1075$v = chr;
1076$v = chr $m1;
1077
1078$v = ucfirst;
1079$v = ucfirst $m1;
1080$v = lcfirst;
1081$v = lcfirst $m1;
1082$v = uc;
1083$v = uc $m1;
1084$v = lc;
1085$v = lc $m1;
1086
1087$v = quotemeta;
1088$v = quotemeta $m1;
1089EXPECT
1090Use of uninitialized value $m1 in crypt at - line 5.
1091Use of uninitialized value $g1 in crypt at - line 5.
1092Use of uninitialized value $_ in ord at - line 7.
1093Use of uninitialized value $m1 in ord at - line 8.
1094Use of uninitialized value $_ in chr at - line 9.
1095Use of uninitialized value $m1 in chr at - line 10.
1096Use of uninitialized value $_ in ucfirst at - line 12.
1097Use of uninitialized value $m1 in ucfirst at - line 13.
1098Use of uninitialized value $_ in lcfirst at - line 14.
1099Use of uninitialized value $m1 in lcfirst at - line 15.
1100Use of uninitialized value $_ in uc at - line 16.
1101Use of uninitialized value $m1 in uc at - line 17.
1102Use of uninitialized value $_ in lc at - line 18.
1103Use of uninitialized value $m1 in lc at - line 19.
1104Use of uninitialized value $_ in quotemeta at - line 21.
1105Use of uninitialized value $m1 in quotemeta at - line 22.
1106########
1107use warnings 'uninitialized';
1108my ($m1, $v1, $v2, $v3, $v4);
1109our ($g1);
1110
1111($v1,$v2,$v3,$v4) = split;
1112($v1,$v2,$v3,$v4) = split $m1;
1113($v1,$v2,$v3,$v4) = split $m1, $m2;
1114($v1,$v2,$v3,$v4) = split $m1, $m2, $g1;
1115
1116$v1 = join $m1;
1117$v2 = join $m1, $m2;
1118$v3 = join $m1, $m2, $m3;
1119EXPECT
1120Use of uninitialized value $_ in split at - line 5.
1121Use of uninitialized value $m1 in regexp compilation at - line 6.
1122Use of uninitialized value $_ in split at - line 6.
1123Use of uninitialized value $m1 in regexp compilation at - line 7.
1124Use of uninitialized value $m2 in split at - line 7.
1125Use of uninitialized value $m1 in regexp compilation at - line 8.
1126Use of uninitialized value $g1 in split at - line 8.
1127Use of uninitialized value $m2 in split at - line 8.
1128Use of uninitialized value $m1 in join or string at - line 10.
1129Use of uninitialized value $m1 in join or string at - line 11.
1130Use of uninitialized value $m2 in join or string at - line 11.
1131Use of uninitialized value $m1 in join or string at - line 12.
1132Use of uninitialized value $m2 in join or string at - line 12.
1133Use of uninitialized value $m3 in join or string at - line 12.
1134########
1135use warnings 'uninitialized';
1136my ($m1, $m2, @ma, $v);
1137
1138our @foo1=(1,undef); chomp @foo1;
1139my  @foo2=(1,undef); chomp @foo2;
1140our @foo3=(1,undef); chop  @foo3;
1141my  @foo4=(1,undef); chop  @foo4;
1142our @foo5=(1,undef); $v = sprintf "%s%s",@foo5;
1143my  @foo6=(1,undef); $v = sprintf "%s%s",@foo6;
1144our %foo7=('foo'=>'bar','baz'=>undef); $v = sprintf "%s%s%s%s",%foo7;
1145my  %foo8=('foo'=>'bar','baz'=>undef); $v = sprintf "%s%s%s%s",%foo8;
1146our @foo9 =(1,undef); $v = sprintf "%s%s%s%s",$m1,@foo9, $ma[2];
1147my  @foo10=(1,undef); $v = sprintf "%s%s%s%s",$m2,@foo10,$ma[2];
1148our %foo11=('foo'=>'bar','baz'=>undef); $v = join '', %foo11;
1149my  %foo12=('foo'=>'bar','baz'=>undef); $v = join '', %foo12;
1150our %foo13=(1..2000,'foo'=>'bar','baz'=>undef); $v = join '', %foo13;
1151my  %foo14=(1..2000,'foo'=>'bar','baz'=>undef); $v = join '', %foo14;
1152EXPECT
1153Use of uninitialized value $foo1[1] in chomp at - line 4.
1154Use of uninitialized value $foo2[1] in chomp at - line 5.
1155Use of uninitialized value $foo3[1] in chop at - line 6.
1156Use of uninitialized value $foo4[1] in chop at - line 7.
1157Use of uninitialized value $foo5[1] in sprintf at - line 8.
1158Use of uninitialized value $foo6[1] in sprintf at - line 9.
1159Use of uninitialized value $foo7{"baz"} in sprintf at - line 10.
1160Use of uninitialized value $foo8{"baz"} in sprintf at - line 11.
1161Use of uninitialized value $m1 in sprintf at - line 12.
1162Use of uninitialized value $foo9[1] in sprintf at - line 12.
1163Use of uninitialized value in sprintf at - line 12.
1164Use of uninitialized value $m2 in sprintf at - line 13.
1165Use of uninitialized value $foo10[1] in sprintf at - line 13.
1166Use of uninitialized value in sprintf at - line 13.
1167Use of uninitialized value $foo11{"baz"} in join or string at - line 14.
1168Use of uninitialized value $foo12{"baz"} in join or string at - line 15.
1169Use of uninitialized value within %foo13 in join or string at - line 16.
1170Use of uninitialized value within %foo14 in join or string at - line 17.
1171########
1172use warnings 'uninitialized';
1173my ($v);
1174
1175undef $^A; $v = $^A + ${^FOO}; # should output '^A' not chr(1)
1176*GLOB1 = *GLOB2;
1177$v = $GLOB1 + 1;
1178$v = $GLOB2 + 1;
1179EXPECT
1180Use of uninitialized value $^FOO in addition (+) at - line 4.
1181Use of uninitialized value $^A in addition (+) at - line 4.
1182Use of uninitialized value $GLOB1 in addition (+) at - line 6.
1183Use of uninitialized value $GLOB2 in addition (+) at - line 7.
1184########
1185use warnings 'uninitialized';
1186my ($v);
1187
1188# check hash key is sanitised
1189my %h = ("\0011\002\r\n\t\f\"\\\x{1234}abcdefghijklmnopqrstuvwxyz", undef);
1190$v = join '', %h;
1191EXPECT
1192Use of uninitialized value $h{"\0011\2\r\n\t\f\"\\\x{1234}abcde"...} in join or string at - line 6.
1193########
1194use warnings 'uninitialized';
1195my ($m1, $v);
1196our ($g1);
1197
1198$v = eval { \&$m1 };
1199$v = eval { \&$g1 };
1200
1201my @a;
1202@a = splice @a, $m1, $g1;
1203$v = 1 + splice @a, $m1, $g1;
1204
1205my $x = bless [], 'Z';
1206eval { $x->$m1() };
1207
1208eval { &$m1() };
1209eval { &$g1() };
1210
1211warn $m1,$g1,"foo";
1212
1213eval { die $m1, $g1 };
1214
1215reset $m1;
1216reset $g1;
1217EXPECT
1218Use of uninitialized value $m1 in subroutine dereference at - line 5.
1219Use of uninitialized value $g1 in subroutine dereference at - line 6.
1220Use of uninitialized value $m1 in splice at - line 9.
1221Use of uninitialized value $g1 in splice at - line 9.
1222Use of uninitialized value $m1 in splice at - line 10.
1223Use of uninitialized value $g1 in splice at - line 10.
1224Use of uninitialized value in addition (+) at - line 10.
1225Use of uninitialized value $m1 in method lookup at - line 13.
1226Use of uninitialized value $m1 in warn at - line 18.
1227Use of uninitialized value $g1 in warn at - line 18.
1228foo at - line 18.
1229Use of uninitialized value $m1 in die at - line 20.
1230Use of uninitialized value $g1 in die at - line 20.
1231Use of uninitialized value $m1 in symbol reset at - line 22.
1232Use of uninitialized value $g1 in symbol reset at - line 23.
1233########
1234use warnings 'uninitialized';
1235my ($m1);
1236our ($g1);
1237
1238open FOO;		# accesses $FOO
1239my $foo = 'FO';
1240open($foo."O");	# accesses $FOO
1241open my $x;		# accesses ${*$x}
1242open $foobar;	# accesses ${*$foobar}
1243my $y;
1244open $y, $m1;
1245eval { open $y, $m1, $g1 };
1246open $y, '<', $g1;
1247
1248sysopen $y, $m1, $m2;
1249sysopen $y, $m1, $g1, $m2;
1250
1251my $old = umask;
1252umask $m1;
1253umask $g1;
1254umask $old;
1255
1256binmode STDIN, $m1;
1257EXPECT
1258Use of uninitialized value $FOO in open at - line 5.
1259Use of uninitialized value in open at - line 7.
1260Use of uninitialized value in open at - line 8.
1261Use of uninitialized value in open at - line 9.
1262Use of uninitialized value $m1 in open at - line 11.
1263Use of uninitialized value $m1 in open at - line 12.
1264Use of uninitialized value $g1 in open at - line 13.
1265Use of uninitialized value $m2 in sysopen at - line 15.
1266Use of uninitialized value $m1 in sysopen at - line 15.
1267Use of uninitialized value $m2 in sysopen at - line 16.
1268Use of uninitialized value $g1 in sysopen at - line 16.
1269Use of uninitialized value $m1 in sysopen at - line 16.
1270Use of uninitialized value $m1 in umask at - line 19.
1271Use of uninitialized value $g1 in umask at - line 20.
1272Use of uninitialized value $m1 in binmode at - line 23.
1273########
1274use warnings 'uninitialized';
1275my ($m1);
1276our ($g1);
1277
1278eval { my $x; tie $x, $m1 };
1279
1280eval { my $x; read    $m1, $x, $g1 };
1281eval { my $x; read    $m1, $x, $g1, $g2 };
1282eval { my $x; sysread $m1, $x, $g1 };
1283eval { my $x; sysread $m1, $x, $g1, $g2 };
1284EXPECT
1285Use of uninitialized value $m1 in tie at - line 5.
1286Use of uninitialized value $m1 in ref-to-glob cast at - line 7.
1287Use of uninitialized value $g1 in read at - line 7.
1288Use of uninitialized value $m1 in ref-to-glob cast at - line 8.
1289Use of uninitialized value $g1 in read at - line 8.
1290Use of uninitialized value $g2 in read at - line 8.
1291Use of uninitialized value $m1 in ref-to-glob cast at - line 9.
1292Use of uninitialized value $g1 in sysread at - line 9.
1293Use of uninitialized value $m1 in ref-to-glob cast at - line 10.
1294Use of uninitialized value $g1 in sysread at - line 10.
1295Use of uninitialized value $g2 in sysread at - line 10.
1296########
1297use warnings 'uninitialized';
1298my ($m1);
1299our ($g1, @ga);
1300
1301printf $m1;
1302printf STDERR "%d%d%d%d\n", $m1, $m2, $g1, $g2;
1303printf $ga[1000];
1304printf STDERR "FOO1:%s\n", $ga[1000];
1305printf STDERR "FOO2:%s%s%s%s\n", $m1, $g1, $ga[1],$m2;
1306printf STDERR "FOO3:%s%s%s\n", "X", $ga[1],"Y";
1307EXPECT
1308Use of uninitialized value $m1 in printf at - line 5.
1309Use of uninitialized value $m1 in printf at - line 6.
1310Use of uninitialized value $m2 in printf at - line 6.
1311Use of uninitialized value $g1 in printf at - line 6.
1312Use of uninitialized value $g2 in printf at - line 6.
13130000
1314Use of uninitialized value in printf at - line 7.
1315Use of uninitialized value in printf at - line 8.
1316FOO1:
1317Use of uninitialized value $m1 in printf at - line 9.
1318Use of uninitialized value $g1 in printf at - line 9.
1319Use of uninitialized value in printf at - line 9.
1320Use of uninitialized value $m2 in printf at - line 9.
1321FOO2:
1322Use of uninitialized value in printf at - line 10.
1323FOO3:XY
1324########
1325use warnings 'uninitialized';
1326my ($m1);
1327our ($g1);
1328
1329eval { my $x; seek    $x,$m1, $g1 };
1330eval { my $x; sysseek $x,$m1, $g1 };
1331eval { syswrite $m1, $g1 }; # logic changed - now won't try $g1 if $m1 is bad
1332# eval { syswrite STDERR, $m1 };        # XXX under utf8, can give
1333# eval { syswrite STDERR, $m1, $g1 };   # XXX different warnings
1334# eval { syswrite STDERR, $m1, $g1, $m2 };
1335eval { my $x; socket $x, $m1, $g1, $m2 };
1336eval { my ($x,$y); socketpair $x, $y, $m1, $g1, $m2 };
1337EXPECT
1338Use of uninitialized value $x in ref-to-glob cast at - line 5.
1339Use of uninitialized value $g1 in seek at - line 5.
1340Use of uninitialized value $m1 in seek at - line 5.
1341Use of uninitialized value $x in ref-to-glob cast at - line 6.
1342Use of uninitialized value $g1 in sysseek at - line 6.
1343Use of uninitialized value $m1 in sysseek at - line 6.
1344Use of uninitialized value $m1 in ref-to-glob cast at - line 7.
1345Use of uninitialized value $m2 in socket at - line 11.
1346Use of uninitialized value $g1 in socket at - line 11.
1347Use of uninitialized value $m1 in socket at - line 11.
1348Use of uninitialized value $m2 in socketpair at - line 12.
1349Use of uninitialized value $g1 in socketpair at - line 12.
1350Use of uninitialized value $m1 in socketpair at - line 12.
1351########
1352use Config;
1353BEGIN {
1354  if ( !$Config{d_flock} &&
1355       !$Config{d_fcntl_can_lock} &&
1356       !$Config{d_lockf} ) {
1357    print <<EOM ;
1358SKIPPED
1359# flock not present
1360EOM
1361    exit ;
1362  }
1363}
1364use warnings 'uninitialized';
1365our ($g1);
1366
1367eval { my $x; flock $x, $g1 };
1368EXPECT
1369Use of uninitialized value $x in ref-to-glob cast at - line 16.
1370Use of uninitialized value $g1 in flock at - line 16.
1371########
1372use warnings 'uninitialized';
1373my ($m1, $v);
1374our ($g1);
1375
1376stat;
1377lstat;
1378stat $m1;
1379lstat $g1;
1380
1381$v = -R $m1;
1382$v = -W $m1;
1383$v = -X $m1;
1384$v = -r $m1;
1385$v = -w $m1;
1386$v = -x $m1;
1387$v = -e $m1;
1388$v = -o $m1;
1389$v = -O $m1;
1390$v = -z $m1;
1391$v = -s $m1;
1392$v = -M $m1;
1393$v = -A $m1;
1394$v = -C $m1;
1395$v = -S $m1;
1396$v = -c $m1;
1397$v = -b $m1;
1398$v = -f $m1;
1399$v = -d $m1;
1400$v = -p $m1;
1401$v = -l $m1;
1402$v = -u $m1;
1403$v = -g $m1;
1404# $v = -k $m1; # XXX this is a no-op under win32
1405$v = -t $m1;
1406$v = -T $m1;
1407$v = -B $m1;
1408EXPECT
1409Use of uninitialized value $_ in stat at - line 5.
1410Use of uninitialized value $_ in lstat at - line 6.
1411Use of uninitialized value $m1 in stat at - line 7.
1412Use of uninitialized value $g1 in lstat at - line 8.
1413Use of uninitialized value $m1 in -R at - line 10.
1414Use of uninitialized value $m1 in -W at - line 11.
1415Use of uninitialized value $m1 in -X at - line 12.
1416Use of uninitialized value $m1 in -r at - line 13.
1417Use of uninitialized value $m1 in -w at - line 14.
1418Use of uninitialized value $m1 in -x at - line 15.
1419Use of uninitialized value $m1 in -e at - line 16.
1420Use of uninitialized value $m1 in -o at - line 17.
1421Use of uninitialized value $m1 in -O at - line 18.
1422Use of uninitialized value $m1 in -z at - line 19.
1423Use of uninitialized value $m1 in -s at - line 20.
1424Use of uninitialized value $m1 in -M at - line 21.
1425Use of uninitialized value $m1 in -A at - line 22.
1426Use of uninitialized value $m1 in -C at - line 23.
1427Use of uninitialized value $m1 in -S at - line 24.
1428Use of uninitialized value $m1 in -c at - line 25.
1429Use of uninitialized value $m1 in -b at - line 26.
1430Use of uninitialized value $m1 in -f at - line 27.
1431Use of uninitialized value $m1 in -d at - line 28.
1432Use of uninitialized value $m1 in -p at - line 29.
1433Use of uninitialized value $m1 in -l at - line 30.
1434Use of uninitialized value $m1 in -u at - line 31.
1435Use of uninitialized value $m1 in -g at - line 32.
1436Use of uninitialized value $m1 in -t at - line 34.
1437Use of uninitialized value $m1 in -T at - line 35.
1438Use of uninitialized value $m1 in -B at - line 36.
1439########
1440use warnings 'uninitialized';
1441my ($m1, $v);
1442our ($g1);
1443
1444$v = localtime $m1;
1445$v = gmtime $g1;
1446EXPECT
1447Use of uninitialized value $m1 in localtime at - line 5.
1448Use of uninitialized value $g1 in gmtime at - line 6.
1449########
1450use warnings 'uninitialized';
1451my ($m1, $m2, $v);
1452
1453$v = eval;
1454$v = eval $m1;
1455$m2 = q($m1); $v = 1 + eval $m2;
1456EXPECT
1457Use of uninitialized value $_ in eval "string" at - line 4.
1458Use of uninitialized value $m1 in eval "string" at - line 5.
1459Use of uninitialized value in addition (+) at - line 6.
1460########
1461use warnings 'uninitialized';
1462my ($m1);
1463
1464exit $m1;
1465EXPECT
1466Use of uninitialized value $m1 in exit at - line 4.
1467########
1468use warnings 'uninitialized';
1469my $undef;
1470
1471if ($undef == 3) {
1472} elsif ($undef == 0) {
1473}
1474EXPECT
1475Use of uninitialized value $undef in numeric eq (==) at - line 4.
1476Use of uninitialized value $undef in numeric eq (==) at - line 5.
1477########
1478# TODO long standing bug - conditions of while loops
1479use warnings;
1480
1481my $c;
1482my $d = 1;
1483while ($c == 0 && $d) {
1484  # a
1485  # few
1486  # blank
1487  # lines
1488  undef $d;
1489}
1490EXPECT
1491Use of uninitialized value $c in numeric eq (==) at - line 5.
1492Use of uninitialized value $c in numeric eq (==) at - line 5.
1493########
1494# TODO long standing bug - conditions of until loops
1495use warnings;
1496
1497my $c;
1498my $d;
1499until ($c == 1) {
1500  # a
1501  # few
1502  # blank
1503  # lines
1504  $c = 1 if ++$d == 2;
1505}
1506EXPECT
1507Use of uninitialized value $c in numeric eq (==) at - line 5.
1508Use of uninitialized value $c in numeric eq (==) at - line 5.
1509########
1510# TODO long standing bug - conditions of for loops
1511use warnings;
1512
1513my $c;
1514my $d;
1515for ($d = 1; $c == 0 && $d; ) {
1516  # a
1517  # few
1518  # blank
1519  # lines
1520  undef $d;
1521}
1522
1523my $e;
1524for ($d = 2; $d > 0; $e = !($c == 0)) {
1525  # a
1526  # few
1527  # blank
1528  # lines
1529  --$d;
1530}
1531EXPECT
1532Use of uninitialized value $c in numeric eq (==) at - line 5.
1533Use of uninitialized value $c in numeric eq (==) at - line 5.
1534Use of uninitialized value $c in numeric eq (==) at - line 14.
1535Use of uninitialized value $c in numeric eq (==) at - line 14.
1536########
1537# TODO long standing bug - more general variant of the above problem
1538use warnings;
1539my $undef;
1540
1541my $a = $undef + 1;
1542my $b
1543  = $undef
1544  + 1;
1545EXPECT
1546Use of uninitialized value $undef in addition (+) at - line 4.
1547Use of uninitialized value $undef in addition (+) at - line 7.
1548########
1549use warnings 'uninitialized';
1550my ($r1, $r2);
1551$_ = undef;
1552$v = reverse;
1553$v = reverse $r1;
1554$v = reverse "abc", $r2, "def";
1555EXPECT
1556Use of uninitialized value in reverse at - line 4.
1557Use of uninitialized value $r1 in reverse at - line 5.
1558Use of uninitialized value $r2 in reverse at - line 6.
1559########
1560use warnings 'uninitialized';
1561#
1562# ops that can return undef for defined args
1563# split into separate tests to diagnose the cause of daily build smoke
1564#
1565# *** `` not tested: Windows produces an error on STDERR
1566# *** ditto qx()
1567# *** pipe() not tested
1568# *** ioctl not tested
1569# *** socket not tested
1570# *** socketpair not tested
1571# *** bind not tested
1572# *** connect not tested
1573# *** listen not tested
1574# *** shutdown not tested
1575# *** setsockopt not tested
1576# *** getpeername not tested
1577# *** readdir not tested
1578# *** telldir not tested
1579# *** seekdir not tested
1580# *** rewinddir not tested
1581# *** closedir not tested
1582# *** gmtime not tested
1583# *** alarm not tested
1584# *** semget not tested
1585# *** getlogin not tested
1586EXPECT
1587########
1588use warnings 'uninitialized';
1589if ($^O eq 'MSWin32') {
1590    print <<'EOM';
1591SKIPPED
1592# `` produces an error on STDERR on Win32
1593EOM
1594    exit;
1595}
1596my $nocmd  = '/no/such/command';
1597my $v;
1598$v = 1 + `$nocmd`;
1599EXPECT
1600Use of uninitialized value in addition (+) at - line 11.
1601########
1602use warnings 'uninitialized';
1603if ($^O eq 'MSWin32') {
1604    print <<'EOM';
1605SKIPPED
1606# qx produces an error on STDERR on Win32
1607EOM
1608    exit;
1609}
1610my $nocmd  = '/no/such/command';
1611my $v;
1612$v = 1 + qx($nocmd);
1613EXPECT
1614Use of uninitialized value in addition (+) at - line 11.
1615########
1616use warnings 'uninitialized';
1617my $nan = "NaN";
1618if ($nan == $nan) {
1619    print <<'EOM';
1620SKIPPED
1621# NaN not supported here.
1622EOM
1623    exit;
1624}
1625my $v;
1626$v = 1 + ($nan <=> 1);
1627EXPECT
1628Use of uninitialized value in addition (+) at - line 11.
1629########
1630use warnings 'uninitialized';
1631if ($^O eq 'MSWin32') {
1632    print <<'EOM';
1633SKIPPED
1634# -k produces no warning on Win32
1635EOM
1636    exit;
1637}
1638my $nofile = '/no/such/file';
1639my $v;
1640$v = 1 + -k $nofile;
1641EXPECT
1642Use of uninitialized value in addition (+) at - line 11.
1643########
1644use warnings 'uninitialized';
1645my $nofile = '/no/such/file';
1646my $v;
1647my $f = "";
1648$v = 1 + open($f, $nofile);
1649EXPECT
1650Use of uninitialized value in addition (+) at - line 5.
1651########
1652use warnings 'uninitialized';
1653my $nofile = '/no/such/file';
1654my $v;
1655$v = 1 + fileno($nofile);
1656EXPECT
1657Use of uninitialized value in addition (+) at - line 4.
1658########
1659use warnings 'uninitialized';
1660my $nofile = '/no/such/file';
1661my $v;
1662$v = 1 + binmode($nofile);
1663EXPECT
1664Use of uninitialized value in addition (+) at - line 4.
1665########
1666use warnings 'uninitialized';
1667my $nofile = '/no/such/file';
1668my $v;
1669$v = 1 + tied($nofile);
1670EXPECT
1671Use of uninitialized value in addition (+) at - line 4.
1672########
1673use warnings 'uninitialized';
1674my $nofile = '/no/such/file';
1675my $v;
1676$v = 1 + getc($nofile);
1677EXPECT
1678Use of uninitialized value in addition (+) at - line 4.
1679########
1680use warnings 'uninitialized';
1681my $nofile = '/no/such/file';
1682my $v;
1683$v = 1 + sysread($nofile, my $buf,1);
1684EXPECT
1685Use of uninitialized value in addition (+) at - line 4.
1686########
1687use warnings 'uninitialized';
1688my $nofile = '/no/such/file';
1689my $v;
1690$v = 1 + eval { send($nofile, $buf,0) };
1691EXPECT
1692Use of uninitialized value in addition (+) at - line 4.
1693########
1694use warnings 'uninitialized';
1695my $nofile = '/no/such/file';
1696my $v;
1697my $fh = "";
1698$v = 1 + eval { accept($fh, $nofile) };
1699EXPECT
1700Use of uninitialized value in addition (+) at - line 5.
1701########
1702use warnings 'uninitialized';
1703my $nofile = '/no/such/file';
1704my $v;
1705$v = 1 + (-r $nofile);
1706EXPECT
1707Use of uninitialized value in addition (+) at - line 4.
1708########
1709use warnings 'uninitialized';
1710my $nofile = '/no/such/file';
1711my $v;
1712$v = 1 + (-w $nofile);
1713EXPECT
1714Use of uninitialized value in addition (+) at - line 4.
1715########
1716use warnings 'uninitialized';
1717my $nofile = '/no/such/file';
1718my $v;
1719$v = 1 + (-x $nofile);
1720EXPECT
1721Use of uninitialized value in addition (+) at - line 4.
1722########
1723use warnings 'uninitialized';
1724my $nofile = '/no/such/file';
1725my $v;
1726$v = 1 + (-o $nofile);
1727EXPECT
1728Use of uninitialized value in addition (+) at - line 4.
1729########
1730use warnings 'uninitialized';
1731my $nofile = '/no/such/file';
1732my $v;
1733$v = 1 + (-R $nofile);
1734EXPECT
1735Use of uninitialized value in addition (+) at - line 4.
1736########
1737use warnings 'uninitialized';
1738my $nofile = '/no/such/file';
1739my $v;
1740$v = 1 + (-W $nofile);
1741EXPECT
1742Use of uninitialized value in addition (+) at - line 4.
1743########
1744use warnings 'uninitialized';
1745my $nofile = '/no/such/file';
1746my $v;
1747$v = 1 + (-X $nofile);
1748EXPECT
1749Use of uninitialized value in addition (+) at - line 4.
1750########
1751use warnings 'uninitialized';
1752my $nofile = '/no/such/file';
1753my $v;
1754$v = 1 + (-O $nofile);
1755EXPECT
1756Use of uninitialized value in addition (+) at - line 4.
1757########
1758use warnings 'uninitialized';
1759my $nofile = '/no/such/file';
1760my $v;
1761$v = 1 + (-e $nofile);
1762EXPECT
1763Use of uninitialized value in addition (+) at - line 4.
1764########
1765use warnings 'uninitialized';
1766my $nofile = '/no/such/file';
1767my $v;
1768$v = 1 + (-z $nofile);
1769EXPECT
1770Use of uninitialized value in addition (+) at - line 4.
1771########
1772use warnings 'uninitialized';
1773my $nofile = '/no/such/file';
1774my $v;
1775$v = 1 + (-s $nofile);
1776EXPECT
1777Use of uninitialized value in addition (+) at - line 4.
1778########
1779use warnings 'uninitialized';
1780my $nofile = '/no/such/file';
1781my $v;
1782$v = 1 + (-f $nofile);
1783EXPECT
1784Use of uninitialized value in addition (+) at - line 4.
1785########
1786use warnings 'uninitialized';
1787my $nofile = '/no/such/file';
1788my $v;
1789$v = 1 + (-d $nofile);
1790EXPECT
1791Use of uninitialized value in addition (+) at - line 4.
1792########
1793use warnings 'uninitialized';
1794my $nofile = '/no/such/file';
1795my $v;
1796$v = 1 + (-l $nofile);
1797EXPECT
1798Use of uninitialized value in addition (+) at - line 4.
1799########
1800use warnings 'uninitialized';
1801my $nofile = '/no/such/file';
1802my $v;
1803$v = 1 + (-p $nofile);
1804EXPECT
1805Use of uninitialized value in addition (+) at - line 4.
1806########
1807use warnings 'uninitialized';
1808my $nofile = '/no/such/file';
1809my $v;
1810$v = 1 + (-S $nofile);
1811EXPECT
1812Use of uninitialized value in addition (+) at - line 4.
1813########
1814use warnings 'uninitialized';
1815my $nofile = '/no/such/file';
1816my $v;
1817$v = 1 + (-b $nofile);
1818EXPECT
1819Use of uninitialized value in addition (+) at - line 4.
1820########
1821use warnings 'uninitialized';
1822my $nofile = '/no/such/file';
1823my $v;
1824$v = 1 + (-c $nofile);
1825EXPECT
1826Use of uninitialized value in addition (+) at - line 4.
1827########
1828use warnings 'uninitialized';
1829my $nofile = '/no/such/file';
1830my $v;
1831$v = 1 + (-t $nofile);
1832EXPECT
1833Use of uninitialized value in addition (+) at - line 4.
1834########
1835use warnings 'uninitialized';
1836my $nofile = '/no/such/file';
1837my $v;
1838$v = 1 + (-u $nofile);
1839EXPECT
1840Use of uninitialized value in addition (+) at - line 4.
1841########
1842use warnings 'uninitialized';
1843my $nofile = '/no/such/file';
1844my $v;
1845$v = 1 + (-g $nofile);
1846EXPECT
1847Use of uninitialized value in addition (+) at - line 4.
1848########
1849use warnings 'uninitialized';
1850my $nofile = '/no/such/file';
1851my $v;
1852$v = 1 + (-T $nofile);
1853EXPECT
1854Use of uninitialized value in addition (+) at - line 4.
1855########
1856use warnings 'uninitialized';
1857my $nofile = '/no/such/file';
1858my $v;
1859$v = 1 + (-B $nofile);
1860EXPECT
1861Use of uninitialized value in addition (+) at - line 4.
1862########
1863use warnings 'uninitialized';
1864my $nofile = '/no/such/file';
1865my $v;
1866$v = 1 + (-M $nofile);
1867EXPECT
1868Use of uninitialized value in addition (+) at - line 4.
1869########
1870use warnings 'uninitialized';
1871my $nofile = '/no/such/file';
1872my $v;
1873$v = 1 + (-A $nofile);
1874EXPECT
1875Use of uninitialized value in addition (+) at - line 4.
1876########
1877use warnings 'uninitialized';
1878my $nofile = '/no/such/file';
1879my $v;
1880$v = 1 + (-C $nofile);
1881EXPECT
1882Use of uninitialized value in addition (+) at - line 4.
1883########
1884use warnings 'uninitialized';
1885my $nofile = '/no/such/file';
1886my $v;
1887$v = 1 + eval { readlink $nofile };
1888EXPECT
1889Use of uninitialized value in addition (+) at - line 4.
1890########
1891use warnings 'uninitialized';
1892my $nofile = '/no/such/file';
1893my $v;
1894$v = 1 + opendir($f, $nofile);
1895EXPECT
1896Use of uninitialized value in addition (+) at - line 4.
1897########
1898use warnings 'uninitialized';
1899my $nofile = '/no/such/file';
1900my $v;
1901$v = 1 + undef;
1902EXPECT
1903Use of uninitialized value in addition (+) at - line 4.
1904########
1905use warnings 'uninitialized';
1906my $nofile = '/no/such/file';
1907my $v;
1908my $x = 1; $v = 1 + undef($x);
1909EXPECT
1910Use of uninitialized value in addition (+) at - line 4.
1911########
1912use warnings 'uninitialized';
1913my $v;
1914my $emptys = "";
1915$v = 1 + substr($emptys,2,1);
1916EXPECT
1917Use of uninitialized value in addition (+) at - line 4.
1918########
1919use warnings 'uninitialized';
1920my $v;
1921my @emptya;
1922$v = 1 + each @emptya;
1923EXPECT
1924Use of uninitialized value in addition (+) at - line 4.
1925########
1926use warnings 'uninitialized';
1927my $v;
1928my %emptyh;
1929$v = 1 + each %emptyh;
1930EXPECT
1931Use of uninitialized value in addition (+) at - line 4.
1932########
1933use warnings 'uninitialized';
1934my $v;
1935my @emptya;
1936$v = 1 + sort @emptya;
1937EXPECT
1938Use of uninitialized value in addition (+) at - line 4.
1939########
1940use warnings 'uninitialized';
1941my $v;
1942my $zero = 0; $v = 1 + caller($zero);
1943EXPECT
1944Use of uninitialized value in addition (+) at - line 3.
1945########
1946use warnings 'uninitialized';
1947my $nofile = '/no/such/file';
1948my $v;
1949$v = 1 + do $nofile;
1950EXPECT
1951Use of uninitialized value in addition (+) at - line 4.
1952########
1953use warnings 'uninitialized';
1954my $v;
1955my $fn = sub {};
1956$v = 1 + prototype $fn;
1957EXPECT
1958Use of uninitialized value in addition (+) at - line 4.
1959########
1960use warnings 'uninitialized'; no warnings 'experimental::smartmatch';
1961my $v;
1962my $fn = sub {};
1963$v = 1 + (1 ~~ $fn);
1964EXPECT
1965Use of uninitialized value in addition (+) at - line 4.
1966########
1967use warnings 'uninitialized';
1968my $v;
1969my $f = "";
1970$v = 1 + (print STDIN $f); # print to STDIN returns undef
1971EXPECT
1972Use of uninitialized value in addition (+) at - line 4.
1973########
1974use warnings 'uninitialized';
1975my $v;
1976my $f = "";
1977$v = 1 + (printf STDIN "%s", $f);
1978EXPECT
1979Use of uninitialized value in addition (+) at - line 4.
1980########
1981use warnings 'uninitialized';
1982my $v;
1983my $f = "";
1984{ use feature 'say'; $v = 1 + (say STDIN "%s", $f); }
1985EXPECT
1986Use of uninitialized value in addition (+) at - line 4.
1987########
1988use warnings 'uninitialized';
1989my $v;
1990my $f = "";
1991$v = 1 + (unpack("",$f));
1992EXPECT
1993Use of uninitialized value in addition (+) at - line 4.
1994########
1995use warnings 'uninitialized';
1996my $nofile = '/no/such/file';
1997my $v;
1998my $f = "";
1999$v = 1 + sysopen($f, $nofile, 0);
2000EXPECT
2001Use of uninitialized value in addition (+) at - line 5.
2002########
2003use warnings 'uninitialized';
2004my $v;
2005{ my $x = -1; $v = 1 + sysseek(DATA, $x, 0); }
2006__END__
2007EXPECT
2008Use of uninitialized value in addition (+) at - line 3.
2009########
2010use warnings 'uninitialized';
2011delete $::{'Foo::'};
2012my $moo = $Foo::BAR + 42;
2013__END__
2014EXPECT
2015Use of uninitialized value in addition (+) at - line 3.
2016########
2017use warnings 'uninitialized';
2018use constant {u=>undef, v=>undef};
2019sub foo () {u}
2020sub foo () {v}
2021EXPECT
2022########
2023# [perl #72090]
2024use warnings 'uninitialized';
2025$a = @$a > 0;
2026EXPECT
2027Use of uninitialized value $a in array dereference at - line 3.
2028Use of uninitialized value in numeric gt (>) at - line 3.
2029########
2030# [perl #103766]
2031use warnings 'uninitialized';
2032"@{[ $x ]}";
2033EXPECT
2034Use of uninitialized value in join or string at - line 3.
2035########
2036# inside formats
2037use warnings 'uninitialized';
2038my $x;
2039format =
2040@
2041"$x";
2042.
2043write;
2044EXPECT
2045Use of uninitialized value $x in string at - line 6.
2046########
2047# NAME off-by-one error in hash bucket walk in key detection logic
2048use warnings 'uninitialized';
2049
2050for ( 0 .. 20 ) { # we assume that this means we test keys for every bucket
2051    my %h= ( $_ => undef );
2052    my $s= sprintf "%s", $h{$_};
2053}
2054EXPECT
2055Use of uninitialized value $h{"0"} in sprintf at - line 5.
2056Use of uninitialized value $h{"1"} in sprintf at - line 5.
2057Use of uninitialized value $h{"2"} in sprintf at - line 5.
2058Use of uninitialized value $h{"3"} in sprintf at - line 5.
2059Use of uninitialized value $h{"4"} in sprintf at - line 5.
2060Use of uninitialized value $h{"5"} in sprintf at - line 5.
2061Use of uninitialized value $h{"6"} in sprintf at - line 5.
2062Use of uninitialized value $h{"7"} in sprintf at - line 5.
2063Use of uninitialized value $h{"8"} in sprintf at - line 5.
2064Use of uninitialized value $h{"9"} in sprintf at - line 5.
2065Use of uninitialized value $h{"10"} in sprintf at - line 5.
2066Use of uninitialized value $h{"11"} in sprintf at - line 5.
2067Use of uninitialized value $h{"12"} in sprintf at - line 5.
2068Use of uninitialized value $h{"13"} in sprintf at - line 5.
2069Use of uninitialized value $h{"14"} in sprintf at - line 5.
2070Use of uninitialized value $h{"15"} in sprintf at - line 5.
2071Use of uninitialized value $h{"16"} in sprintf at - line 5.
2072Use of uninitialized value $h{"17"} in sprintf at - line 5.
2073Use of uninitialized value $h{"18"} in sprintf at - line 5.
2074Use of uninitialized value $h{"19"} in sprintf at - line 5.
2075Use of uninitialized value $h{"20"} in sprintf at - line 5.
2076########
2077# NAME SvPOK && SvLEN==0 should not produce uninit warning
2078use warnings 'uninitialized';
2079
2080$v = int(${qr||}); # sv_2iv on a regexp
2081$v = 1.1 *  ${qr||}; # sv_2nv on a regexp
2082$v = ${qr||} << 2; # sv_2uv on a regexp
2083
2084sub TIESCALAR{bless[]}
2085sub FETCH {${qr||}}
2086tie $t, "";
2087$v = 1.1 * $t; # sv_2nv on a tied regexp
2088
2089EXPECT
2090