This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Test for lack of uninit warnings in sub redef
[perl5.git] / t / lib / warnings / 9uninit
... / ...
CommitLineData
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 ${$/} in scalar chomp at - line 6.
413Use of uninitialized value ${$/} in chomp at - line 8.
414Use of uninitialized value ${$/} in chomp at - line 8.
415Use of uninitialized value $y in chomp at - line 8.
416Use of uninitialized value $y in chop at - line 8.
417########
418use warnings 'uninitialized';
419my ($m1, @ma, %mh);
420our ($g1);
421
422delete $ma[$m1];
423delete @ma[$m1, $g1];
424delete $mh{$m1};
425delete @mh{$m1, $g1};
426EXPECT
427Use of uninitialized value $m1 in delete at - line 5.
428Use of uninitialized value $m1 in delete at - line 6.
429Use of uninitialized value $g1 in delete at - line 6.
430Use of uninitialized value $m1 in delete at - line 7.
431Use of uninitialized value $m1 in delete at - line 8.
432Use of uninitialized value $g1 in delete at - line 8.
433########
434use warnings 'uninitialized';
435my ($m1, @ma, %mh);
436our ($g1);
437
438my @a = @ma[$m1, $g1];
439@a = (4,5)[$m1, $g1];
440@a = @mh{$m1, $g1};
441EXPECT
442Use of uninitialized value $m1 in array slice at - line 5.
443Use of uninitialized value $g1 in array slice at - line 5.
444Use of uninitialized value $m1 in list slice at - line 6.
445Use of uninitialized value $g1 in list slice at - line 6.
446Use of uninitialized value $m1 in hash slice at - line 7.
447Use of uninitialized value $g1 in hash slice at - line 7.
448########
449use warnings 'uninitialized';
450my ($m1, @ma, %mh, $v);
451our ($g1, @ga, %gh);
452
453$v = exists $ma[$m1];
454$v = exists $ga[$g1];
455$v = exists $mh{$m1};
456$v = exists $gh{$g1};
457EXPECT
458Use of uninitialized value $m1 in exists at - line 5.
459Use of uninitialized value $g1 in exists at - line 6.
460Use of uninitialized value $m1 in exists at - line 7.
461Use of uninitialized value $g1 in exists at - line 8.
462########
463use warnings 'uninitialized';
464my ($m1, $m2);
465my ($v, @a);
466my ($t, $u) = (1, 1);
467
468local $.;
469
470@ma = (1 .. 2);
471@ma = ($t .. 2);
472@ma = ($m1 .. 2);
473@ma = (1 .. $u);
474@ma = (1 .. $m2);
475
476@ma = (1 ... 2);
477@ma = ($t ... 2);
478@ma = ($m1 ... 2);
479@ma = (1 ... $u);
480@ma = (1 ... $m2);
481
482$v = (1 .. 2);
483$v = ($t .. 2);
484$v = ($m1 .. 2);
485$v = (1 .. $u);
486$v = (1 .. $m2);
487
488$v = (1 ... 2);
489$v = ($t ... 2);
490$v = ($m1 ... 2);
491$v = (1 ... $u);
492$v = (1 ... $m2);
493EXPECT
494Use of uninitialized value $m1 in range (or flop) at - line 10.
495Use of uninitialized value $m2 in range (or flop) at - line 12.
496Use of uninitialized value $m1 in range (or flop) at - line 16.
497Use of uninitialized value $m2 in range (or flop) at - line 18.
498Use of uninitialized value $. in range (or flip) at - line 20.
499Use of uninitialized value $. in range (or flop) at - line 21.
500Use of uninitialized value $. in range (or flip) at - line 23.
501Use of uninitialized value $. in range (or flip) at - line 24.
502Use of uninitialized value $. in range (or flip) at - line 26.
503Use of uninitialized value $. in range (or flip) at - line 29.
504Use of uninitialized value $. in range (or flip) at - line 30.
505########
506use warnings 'uninitialized';
507my ($m1, $m2);
508my ($v, @a);
509my ($t, $u) = (1, 1);
510
511@ma = ($t .. $u);
512@ma = ($m1 .. $u);
513@ma = ($t .. $m2);
514@ma = ($m1 .. $m2);
515
516@ma = ($t ... $u);
517@ma = ($m1 ... $u);
518@ma = ($t ... $m2);
519@ma = ($m1 ... $m2);
520
521$v = ($t .. $u);
522$v = ($m1 .. $u);
523$v = ($t .. $m2);
524$v = ($m1 .. $m2);
525
526$v = ($t ... $u);
527$v = ($m1 ... $u);
528$v = ($t ... $m2);
529$v = ($m1 ... $m2);
530EXPECT
531Use of uninitialized value $m1 in range (or flop) at - line 7.
532Use of uninitialized value $m2 in range (or flop) at - line 8.
533Use of uninitialized value $m1 in range (or flop) at - line 9.
534Use of uninitialized value $m2 in range (or flop) at - line 9.
535Use of uninitialized value $m1 in range (or flop) at - line 12.
536Use of uninitialized value $m2 in range (or flop) at - line 13.
537Use of uninitialized value $m1 in range (or flop) at - line 14.
538Use of uninitialized value $m2 in range (or flop) at - line 14.
539########
540use warnings 'uninitialized';
541my ($m1, $v);
542our ($g1);
543
544my ($x1,$x2);
545$v = $x1 << $m1;
546$v = $x2 << $g1;
547EXPECT
548Use of uninitialized value $m1 in left bitshift (<<) at - line 6.
549Use of uninitialized value $x1 in left bitshift (<<) at - line 6.
550Use of uninitialized value $g1 in left bitshift (<<) at - line 7.
551Use of uninitialized value $x2 in left bitshift (<<) at - line 7.
552########
553use warnings 'uninitialized';
554my ($m1, $m2, $v);
555our ($g1, $g2);
556
557use integer;
558$v = $m1 + $g1;
559$v = $m1 - $g1;
560$v = $m1 * $g1;
561eval {$v = $m1 / $g1};
562$v = $m2 / 2;
563eval {$v = $m1 % $g1};
564$v = $m2 % 2;
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;
573EXPECT
574Use of uninitialized value $g1 in integer addition (+) at - line 6.
575Use of uninitialized value $m1 in integer addition (+) at - line 6.
576Use of uninitialized value $g1 in integer subtraction (-) at - line 7.
577Use of uninitialized value $m1 in integer subtraction (-) at - line 7.
578Use of uninitialized value $g1 in integer multiplication (*) at - line 8.
579Use of uninitialized value $m1 in integer multiplication (*) at - line 8.
580Use of uninitialized value $g1 in integer division (/) at - line 9.
581Use of uninitialized value $m2 in integer division (/) at - line 10.
582Use of uninitialized value $g1 in integer modulus (%) at - line 11.
583Use of uninitialized value $m1 in integer modulus (%) at - line 11.
584Use of uninitialized value $m2 in integer modulus (%) at - line 12.
585Use of uninitialized value $g1 in integer lt (<) at - line 13.
586Use of uninitialized value $m1 in integer lt (<) at - line 13.
587Use of uninitialized value $g1 in integer gt (>) at - line 14.
588Use of uninitialized value $m1 in integer gt (>) at - line 14.
589Use of uninitialized value $g1 in integer le (<=) at - line 15.
590Use of uninitialized value $m1 in integer le (<=) at - line 15.
591Use of uninitialized value $g1 in integer ge (>=) at - line 16.
592Use of uninitialized value $m1 in integer ge (>=) at - line 16.
593Use of uninitialized value $g1 in integer eq (==) at - line 17.
594Use of uninitialized value $m1 in integer eq (==) at - line 17.
595Use of uninitialized value $g1 in integer ne (!=) at - line 18.
596Use of uninitialized value $m1 in integer ne (!=) at - line 18.
597Use of uninitialized value $g1 in integer comparison (<=>) at - line 19.
598Use of uninitialized value $m1 in integer comparison (<=>) at - line 19.
599Use of uninitialized value $m1 in integer negation (-) at - line 20.
600########
601use warnings 'uninitialized';
602my ($m1, $m2, $v);
603our ($g1, $g2);
604
605$v = int($g1);
606$v = abs($g2);
607EXPECT
608Use of uninitialized value $g1 in int at - line 5.
609Use of uninitialized value $g2 in abs at - line 6.
610########
611use warnings 'uninitialized';
612my ($m1, $m2, $v);
613our ($g1);
614
615$v = pack $m1;
616$v = pack "i*", $m2, $g1, $g2;
617my @unpack = unpack $m1, $m2;
618EXPECT
619Use of uninitialized value $m1 in pack at - line 5.
620Use of uninitialized value $m2 in pack at - line 6.
621Use of uninitialized value $g1 in pack at - line 6.
622Use of uninitialized value $g2 in pack at - line 6.
623Use of uninitialized value $m1 in unpack at - line 7.
624Use of uninitialized value $m2 in unpack at - line 7.
625########
626use warnings 'uninitialized';
627my ($m1);
628our ($g1);
629
630my @sort;
631@sort = sort $m1, $g1;
632@sort = sort {$a <=> $b} $m1, $g1;
633sub sortf {$a-1 <=> $b-1};
634@sort = sort &sortf, $m1, $g1;
635@sort = sort { undef } 1, 2;
636sub frobnicate($$) { undef }
637@sort = sort frobnicate 1, 2;
638@sort = sort pyfg 1, 2;
639@sort = sort pyfgc 1, 2;
640no warnings;
641sub pyfg { undef }
642sub pyfgc($$) { undef }
643use warnings;
644sub dog {}
645sub dogwood($$) {}
646@sort = sort dog 1,2;
647@sort = sort dogwood 1,2;
648EXPECT
649Use of uninitialized value $m1 in sort at - line 6.
650Use of uninitialized value $g1 in sort at - line 6.
651Use of uninitialized value $m1 in sort at - line 6.
652Use of uninitialized value $g1 in sort at - line 6.
653Use of uninitialized value $m1 in sort at - line 7.
654Use of uninitialized value $g1 in sort at - line 7.
655Use of uninitialized value $m1 in sort at - line 7.
656Use of uninitialized value $g1 in sort at - line 7.
657Use of uninitialized value $a in subtraction (-) at - line 8.
658Use of uninitialized value $b in subtraction (-) at - line 8.
659Use of uninitialized value $m1 in sort at - line 9.
660Use of uninitialized value $g1 in sort at - line 9.
661Use of uninitialized value $m1 in sort at - line 9.
662Use of uninitialized value $m1 in sort at - line 9.
663Use of uninitialized value $g1 in sort at - line 9.
664Use of uninitialized value $g1 in sort at - line 9.
665Use of uninitialized value in sort at - line 10.
666Use of uninitialized value in sort at - line 12.
667Use of uninitialized value in sort at - line 13.
668Use of uninitialized value in sort at - line 14.
669Use of uninitialized value in sort at - line 21.
670Use of uninitialized value in sort at - line 22.
671########
672my $nan = sin 9**9**9;
673if ($nan == $nan) {
674 print <<EOM ;
675SKIPPED
676# No nan support
677EOM
678 exit ;
679}
680use warnings 'uninitialized';
681# The optimised {$a<=>$b} case should behave the same way as unoptimised.
682@sort = sort { ($a)[0] <=> $b } 1, $nan;
683@sort = sort { $a <=> $b } 1, $nan;
684EXPECT
685Use of uninitialized value in sort at - line 11.
686Use of uninitialized value in sort at - line 12.
687########
688use warnings 'uninitialized';
689my ($m1, $m2, $v);
690our ($g1);
691
692eval { $v = $m1 / $g1 };
693$v = $m2 / 2;
694eval { $v = $m1 % $g1 };
695$v = $m2 % 2;
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;
707$v = $m1 - $g1;
708EXPECT
709Use of uninitialized value $g1 in division (/) at - line 5.
710Use of uninitialized value $m1 in division (/) at - line 5.
711Use of uninitialized value $m2 in division (/) at - line 6.
712Use of uninitialized value $g1 in modulus (%) at - line 7.
713Use of uninitialized value $m1 in modulus (%) at - line 7.
714Use of uninitialized value $m2 in modulus (%) at - line 8.
715Use of uninitialized value $g1 in numeric eq (==) at - line 9.
716Use of uninitialized value $m1 in numeric eq (==) at - line 9.
717Use of uninitialized value $g1 in numeric ge (>=) at - line 10.
718Use of uninitialized value $m1 in numeric ge (>=) at - line 10.
719Use of uninitialized value $g1 in numeric gt (>) at - line 11.
720Use of uninitialized value $m1 in numeric gt (>) at - line 11.
721Use of uninitialized value $g1 in numeric le (<=) at - line 12.
722Use of uninitialized value $m1 in numeric le (<=) at - line 12.
723Use of uninitialized value $g1 in numeric lt (<) at - line 13.
724Use of uninitialized value $m1 in numeric lt (<) at - line 13.
725Use of uninitialized value $g1 in multiplication (*) at - line 14.
726Use of uninitialized value $m1 in multiplication (*) at - line 14.
727Use of uninitialized value $g1 in numeric comparison (<=>) at - line 15.
728Use of uninitialized value $m1 in numeric comparison (<=>) at - line 15.
729Use of uninitialized value $g1 in numeric ne (!=) at - line 16.
730Use of uninitialized value $m1 in numeric ne (!=) at - line 16.
731Use of uninitialized value $g1 in subtraction (-) at - line 17.
732Use of uninitialized value $m1 in subtraction (-) at - line 17.
733Use of uninitialized value $g1 in exponentiation (**) at - line 18.
734Use of uninitialized value $m1 in exponentiation (**) at - line 18.
735Use of uninitialized value $g1 in addition (+) at - line 19.
736Use of uninitialized value $m1 in addition (+) at - line 19.
737Use of uninitialized value $g1 in subtraction (-) at - line 20.
738Use of uninitialized value $m1 in subtraction (-) at - line 20.
739########
740use warnings 'uninitialized';
741sub TIESCALAR{bless[]}
742sub FETCH { undef }
743
744tie my $m1, "";
745my $v;
746$v = $m1 + $m1;
747$v = $m1 - $m1;
748no warnings;
749$v = $m1 + $m1;
750$v = $m1 - $m1;
751EXPECT
752Use of uninitialized value $m1 in addition (+) at - line 7.
753Use of uninitialized value $m1 in addition (+) at - line 7.
754Use of uninitialized value $m1 in subtraction (-) at - line 8.
755Use of uninitialized value $m1 in subtraction (-) at - line 8.
756########
757use warnings 'uninitialized';
758my ($m1, $v);
759our ($g1);
760
761$v = *global1{$m1};
762$v = prototype $g1;
763$v = bless [], $g1;
764$v = `$m1`;
765
766$v = $m1 . $g1;
767EXPECT
768Use of uninitialized value $m1 in glob elem at - line 5.
769Use of uninitialized value $g1 in subroutine prototype at - line 6.
770Use of uninitialized value $g1 in bless at - line 7.
771Use of uninitialized value $m1 in quoted execution (``, qx) at - line 8.
772Use of uninitialized value $m1 in concatenation (.) or string at - line 10.
773Use of uninitialized value $g1 in concatenation (.) or string at - line 10.
774########
775use warnings 'uninitialized';
776my ($m1);
777our ($g1, $g2);
778
779/y/;
780/$m1/;
781/$g1/;
782
783s/y/z/; undef $_;
784s/$m1/z/; undef $_;
785s//$g1/; undef $_;
786s/$m1/$g1/; undef $_;
787tr/x/y/; undef $_;
788tr/x/y/r; undef $_;
789
790my $_;
791/y/;
792/$m1/;
793/$g1/;
794s/y/z/; undef $_;
795s/$m1/z/; undef $_;
796s//$g1/; undef $_;
797s/$m1/$g1/; undef $_;
798tr/x/y/; undef $_;
799tr/x/y/r; undef $_;
800
801$g2 =~ /y/;
802$g2 =~ /$m1/;
803$g2 =~ /$g1/;
804$g2 =~ s/y/z/; undef $g2;
805$g2 =~ s/$m1/z/; undef $g2;
806$g2 =~ s//$g1/; undef $g2;
807$g2 =~ s/$m1/$g1/; undef $g2;
808$g2 =~ tr/x/y/; undef $g2; # XXX can't extract var name yet
809$g2 =~ tr/x/y/r; undef $g2; # XXX can't extract var name yet
810
811my $foo = "abc";
812$foo =~ /$m1/;
813$foo =~ /$g1/;
814$foo =~ s/y/z/;
815$foo =~ s/$m1/z/;
816$foo =~ s//$g1/;
817$foo =~ s/$m1/$g1/;
818$foo =~ s/./$m1/e;
819undef $g1;
820$m1 = '$g1';
821$foo =~ s//$m1/ee;
822EXPECT
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 $g1 in substitution (s///) at - line 11.
834Use of uninitialized value $_ in substitution (s///) at - line 11.
835Use of uninitialized value $g1 in substitution (s///) at - line 11.
836Use of uninitialized value $m1 in regexp compilation at - line 12.
837Use of uninitialized value $_ in substitution (s///) at - line 12.
838Use of uninitialized value $_ in substitution (s///) at - line 12.
839Use of uninitialized value $g1 in substitution iterator at - line 12.
840Use of uninitialized value $_ in transliteration (tr///) at - line 13.
841Use of uninitialized value $_ in transliteration (tr///) at - line 14.
842Use of uninitialized value $_ in pattern match (m//) at - line 17.
843Use of uninitialized value $m1 in regexp compilation at - line 18.
844Use of uninitialized value $_ in pattern match (m//) at - line 18.
845Use of uninitialized value $g1 in regexp compilation at - line 19.
846Use of uninitialized value $_ in pattern match (m//) at - line 19.
847Use of uninitialized value $_ in substitution (s///) at - line 20.
848Use of uninitialized value $m1 in regexp compilation at - line 21.
849Use of uninitialized value $_ in substitution (s///) at - line 21.
850Use of uninitialized value $_ in substitution (s///) at - line 21.
851Use of uninitialized value $_ in substitution (s///) at - line 22.
852Use of uninitialized value $g1 in substitution (s///) at - line 22.
853Use of uninitialized value $_ in substitution (s///) at - line 22.
854Use of uninitialized value $g1 in substitution (s///) at - line 22.
855Use of uninitialized value $m1 in regexp compilation at - line 23.
856Use of uninitialized value $_ in substitution (s///) at - line 23.
857Use of uninitialized value $_ in substitution (s///) at - line 23.
858Use of uninitialized value $g1 in substitution iterator at - line 23.
859Use of uninitialized value $_ in transliteration (tr///) at - line 24.
860Use of uninitialized value $_ in transliteration (tr///) at - line 25.
861Use of uninitialized value $g2 in pattern match (m//) at - line 27.
862Use of uninitialized value $m1 in regexp compilation at - line 28.
863Use of uninitialized value $g2 in pattern match (m//) at - line 28.
864Use of uninitialized value $g1 in regexp compilation at - line 29.
865Use of uninitialized value $g2 in pattern match (m//) at - line 29.
866Use of uninitialized value $g2 in substitution (s///) at - line 30.
867Use of uninitialized value $m1 in regexp compilation at - line 31.
868Use of uninitialized value $g2 in substitution (s///) at - line 31.
869Use of uninitialized value $g2 in substitution (s///) at - line 31.
870Use of uninitialized value $g2 in substitution (s///) at - line 32.
871Use of uninitialized value $g1 in substitution (s///) at - line 32.
872Use of uninitialized value $g2 in substitution (s///) at - line 32.
873Use of uninitialized value $g1 in substitution (s///) at - line 32.
874Use of uninitialized value $m1 in regexp compilation at - line 33.
875Use of uninitialized value $g2 in substitution (s///) at - line 33.
876Use of uninitialized value $g2 in substitution (s///) at - line 33.
877Use of uninitialized value $g1 in substitution iterator at - line 33.
878Use of uninitialized value in transliteration (tr///) at - line 34.
879Use of uninitialized value in transliteration (tr///) at - line 35.
880Use of uninitialized value $m1 in regexp compilation at - line 38.
881Use of uninitialized value $g1 in regexp compilation at - line 39.
882Use of uninitialized value $m1 in regexp compilation at - line 41.
883Use of uninitialized value $g1 in substitution (s///) at - line 42.
884Use of uninitialized value $m1 in regexp compilation at - line 43.
885Use of uninitialized value $g1 in substitution iterator at - line 43.
886Use of uninitialized value $m1 in substitution iterator at - line 44.
887Use of uninitialized value in substitution iterator at - line 47.
888########
889use warnings 'uninitialized';
890my ($m1);
891
892{ my $foo = "abc"; (substr($foo,0,0)) = ($m1) }
893EXPECT
894Use of uninitialized value $m1 in list assignment at - line 4.
895########
896use warnings 'uninitialized';
897our ($g1);
898
899study;
900study $g1;
901EXPECT
902Use of uninitialized value $_ in study at - line 4.
903Use of uninitialized value $g1 in study at - line 5.
904########
905use warnings 'uninitialized';
906my ($m1);
907
908pos()=0;
909pos($m1)=0;
910EXPECT
911Use of uninitialized value $_ in scalar assignment at - line 4.
912Use of uninitialized value $m1 in scalar assignment at - line 5.
913########
914use warnings 'uninitialized';
915my ($m1);
916our ($g1);
917
918$v = pos($m1) + 1;
919$v = pos($g1) + 1;
920$m1 = 0;
921$g1 = "";
922$v = pos($m1) + 1;
923$v = pos($g1) + 1;
924EXPECT
925Use of uninitialized value in addition (+) at - line 5.
926Use of uninitialized value in addition (+) at - line 6.
927Use of uninitialized value in addition (+) at - line 9.
928Use of uninitialized value in addition (+) at - line 10.
929########
930use warnings 'uninitialized';
931my ($m1);
932
933{ my $x = "a" x $m1 } # NB LHS of repeat does not warn
934{ my @x = ("a") x $m1 }
935EXPECT
936Use of uninitialized value $m1 in repeat (x) at - line 4.
937Use of uninitialized value $m1 in repeat (x) at - line 5.
938########
939use warnings 'uninitialized';
940my ($m1, $v);
941our ($g1);
942
943$v = "$m1";
944
945$v = $m1 lt $g1;
946$v = $m1 le $g1;
947$v = $m1 gt $g1;
948$v = $m1 ge $g1;
949$v = $m1 eq $g1;
950$v = $m1 ne $g1;
951$v = $m1 cmp $g1;
952EXPECT
953Use of uninitialized value $m1 in string at - line 5.
954Use of uninitialized value $m1 in string lt at - line 7.
955Use of uninitialized value $g1 in string lt at - line 7.
956Use of uninitialized value $m1 in string le at - line 8.
957Use of uninitialized value $g1 in string le at - line 8.
958Use of uninitialized value $m1 in string gt at - line 9.
959Use of uninitialized value $g1 in string gt at - line 9.
960Use of uninitialized value $m1 in string ge at - line 10.
961Use of uninitialized value $g1 in string ge at - line 10.
962Use of uninitialized value $m1 in string eq at - line 11.
963Use of uninitialized value $g1 in string eq at - line 11.
964Use of uninitialized value $m1 in string ne at - line 12.
965Use of uninitialized value $g1 in string ne at - line 12.
966Use of uninitialized value $m1 in string comparison (cmp) at - line 13.
967Use of uninitialized value $g1 in string comparison (cmp) at - line 13.
968########
969use warnings 'uninitialized';
970my ($m1, $v);
971our ($g1);
972
973$v = atan2($m1,$g1);
974$v = sin $m1;
975$v = cos $m1;
976$v = rand $m1;
977$v = srand $m1;
978$v = exp $m1;
979$v = eval {log $m1};
980$v = sqrt $m1;
981$v = hex $m1;
982$v = oct $m1;
983$v = oct;
984$v = length; # does not warn
985EXPECT
986Use of uninitialized value $g1 in atan2 at - line 5.
987Use of uninitialized value $m1 in atan2 at - line 5.
988Use of uninitialized value $m1 in sin at - line 6.
989Use of uninitialized value $m1 in cos at - line 7.
990Use of uninitialized value $m1 in rand at - line 8.
991Use of uninitialized value $m1 in srand at - line 9.
992Use of uninitialized value $m1 in exp at - line 10.
993Use of uninitialized value $m1 in log at - line 11.
994Use of uninitialized value $m1 in sqrt at - line 12.
995Use of uninitialized value $m1 in hex at - line 13.
996Use of uninitialized value $m1 in oct at - line 14.
997Use of uninitialized value $_ in oct at - line 15.
998########
999use warnings 'uninitialized';
1000my ($m1, $v);
1001our ($g1);
1002
1003$v = substr $m1, $g1;
1004$v = substr $m1, $g1, $m2;
1005$v = substr $m1, $g1, $m2, $g2; undef $m1;
1006substr($m1, $g1) = $g2; undef $m1; # NB global2
1007substr($m1, $g1, $m2) = $g2; undef $m1; # isn't identified
1008
1009$v = eval {vec ($m1, $g1, $m2)};
1010eval {vec ($m1, $g1, $m2) = $g2}; undef $m1; # ditto
1011
1012$v = index $m1, $m2;
1013$v = index $m1, $m2, $g1;
1014$v = rindex $m1, $m2;
1015$v = rindex $m1, $m2, $g1;
1016EXPECT
1017Use of uninitialized value $g1 in substr at - line 5.
1018Use of uninitialized value $m1 in substr at - line 5.
1019Use of uninitialized value $m2 in substr at - line 6.
1020Use of uninitialized value $g1 in substr at - line 6.
1021Use of uninitialized value $m1 in substr at - line 6.
1022Use of uninitialized value $g2 in substr at - line 7.
1023Use of uninitialized value $m2 in substr at - line 7.
1024Use of uninitialized value $g1 in substr at - line 7.
1025Use of uninitialized value $m1 in substr at - line 7.
1026Use of uninitialized value $g1 in substr at - line 8.
1027Use of uninitialized value $m1 in substr at - line 8.
1028Use of uninitialized value in scalar assignment at - line 8.
1029Use of uninitialized value $m2 in substr at - line 9.
1030Use of uninitialized value $g1 in substr at - line 9.
1031Use of uninitialized value $m1 in substr at - line 9.
1032Use of uninitialized value in scalar assignment at - line 9.
1033Use of uninitialized value $m2 in vec at - line 11.
1034Use of uninitialized value $g1 in vec at - line 11.
1035Use of uninitialized value $m1 in vec at - line 11.
1036Use of uninitialized value $m2 in vec at - line 12.
1037Use of uninitialized value $g1 in vec at - line 12.
1038Use of uninitialized value $m1 in vec at - line 12.
1039Use of uninitialized value $m1 in index at - line 14.
1040Use of uninitialized value $m2 in index at - line 14.
1041Use of uninitialized value $g1 in index at - line 15.
1042Use of uninitialized value $m1 in index at - line 15.
1043Use of uninitialized value $m2 in index at - line 15.
1044Use of uninitialized value $m1 in rindex at - line 16.
1045Use of uninitialized value $m2 in rindex at - line 16.
1046Use of uninitialized value $g1 in rindex at - line 17.
1047Use of uninitialized value $m1 in rindex at - line 17.
1048Use of uninitialized value $m2 in rindex at - line 17.
1049########
1050use warnings 'uninitialized';
1051my ($m1, $v);
1052our ($g1);
1053
1054$v = sprintf $m1;
1055$v = sprintf '%d%d%d%d', $m1, $m2, $g1, $g2;
1056my $m3; eval {formline $m3 };
1057formline '@<<@<<@<<@<<', $m1, $m2, $g1, $g2;
1058EXPECT
1059Use of uninitialized value $m1 in sprintf at - line 5.
1060Use of uninitialized value $m1 in sprintf at - line 6.
1061Use of uninitialized value $m2 in sprintf at - line 6.
1062Use of uninitialized value $g1 in sprintf at - line 6.
1063Use of uninitialized value $g2 in sprintf at - line 6.
1064Use of uninitialized value $m3 in formline at - line 7.
1065Use of uninitialized value $m1 in formline at - line 8.
1066Use of uninitialized value $m2 in formline at - line 8.
1067Use of uninitialized value $g1 in formline at - line 8.
1068Use of uninitialized value $g2 in formline at - line 8.
1069########
1070use warnings 'uninitialized';
1071my ($m1, $v);
1072our ($g1);
1073
1074$v = crypt $m1, $g1;
1075
1076$v = ord;
1077$v = ord $m1;
1078$v = chr;
1079$v = chr $m1;
1080
1081$v = ucfirst;
1082$v = ucfirst $m1;
1083$v = lcfirst;
1084$v = lcfirst $m1;
1085$v = uc;
1086$v = uc $m1;
1087$v = lc;
1088$v = lc $m1;
1089
1090$v = quotemeta;
1091$v = quotemeta $m1;
1092EXPECT
1093Use of uninitialized value $m1 in crypt at - line 5.
1094Use of uninitialized value $g1 in crypt at - line 5.
1095Use of uninitialized value $_ in ord at - line 7.
1096Use of uninitialized value $m1 in ord at - line 8.
1097Use of uninitialized value $_ in chr at - line 9.
1098Use of uninitialized value $m1 in chr at - line 10.
1099Use of uninitialized value $_ in ucfirst at - line 12.
1100Use of uninitialized value $m1 in ucfirst at - line 13.
1101Use of uninitialized value $_ in lcfirst at - line 14.
1102Use of uninitialized value $m1 in lcfirst at - line 15.
1103Use of uninitialized value $_ in uc at - line 16.
1104Use of uninitialized value $m1 in uc at - line 17.
1105Use of uninitialized value $_ in lc at - line 18.
1106Use of uninitialized value $m1 in lc at - line 19.
1107Use of uninitialized value $_ in quotemeta at - line 21.
1108Use of uninitialized value $m1 in quotemeta at - line 22.
1109########
1110use warnings 'uninitialized';
1111my ($m1, $v1, $v2, $v3, $v4);
1112our ($g1);
1113
1114($v1,$v2,$v3,$v4) = split;
1115($v1,$v2,$v3,$v4) = split $m1;
1116($v1,$v2,$v3,$v4) = split $m1, $m2;
1117($v1,$v2,$v3,$v4) = split $m1, $m2, $g1;
1118
1119$v1 = join $m1;
1120$v2 = join $m1, $m2;
1121$v3 = join $m1, $m2, $m3;
1122EXPECT
1123Use of uninitialized value $_ in split at - line 5.
1124Use of uninitialized value $m1 in regexp compilation at - line 6.
1125Use of uninitialized value $_ in split at - line 6.
1126Use of uninitialized value $m1 in regexp compilation at - line 7.
1127Use of uninitialized value $m2 in split at - line 7.
1128Use of uninitialized value $m1 in regexp compilation at - line 8.
1129Use of uninitialized value $g1 in split at - line 8.
1130Use of uninitialized value $m2 in split at - line 8.
1131Use of uninitialized value $m1 in join or string at - line 10.
1132Use of uninitialized value $m1 in join or string at - line 11.
1133Use of uninitialized value $m2 in join or string at - line 11.
1134Use of uninitialized value $m1 in join or string at - line 12.
1135Use of uninitialized value $m2 in join or string at - line 12.
1136Use of uninitialized value $m3 in join or string at - line 12.
1137########
1138use warnings 'uninitialized';
1139my ($m1, $m2, @ma, $v);
1140
1141our @foo1=(1,undef); chomp @foo1;
1142my @foo2=(1,undef); chomp @foo2;
1143our @foo3=(1,undef); chop @foo3;
1144my @foo4=(1,undef); chop @foo4;
1145our @foo5=(1,undef); $v = sprintf "%s%s",@foo5;
1146my @foo6=(1,undef); $v = sprintf "%s%s",@foo6;
1147our %foo7=('foo'=>'bar','baz'=>undef); $v = sprintf "%s%s",%foo7;
1148my %foo8=('foo'=>'bar','baz'=>undef); $v = sprintf "%s%s",%foo8;
1149our @foo9 =(1,undef); $v = sprintf "%s%s%s%s",$m1,@foo9, $ma[2];
1150my @foo10=(1,undef); $v = sprintf "%s%s%s%s",$m2,@foo10,$ma[2];
1151our %foo11=('foo'=>'bar','baz'=>undef); $v = join '', %foo11;
1152my %foo12=('foo'=>'bar','baz'=>undef); $v = join '', %foo12;
1153our %foo13=(1..2000,'foo'=>'bar','baz'=>undef); $v = join '', %foo13;
1154my %foo14=(1..2000,'foo'=>'bar','baz'=>undef); $v = join '', %foo14;
1155EXPECT
1156Use of uninitialized value $foo1[1] in chomp at - line 4.
1157Use of uninitialized value $foo2[1] in chomp at - line 5.
1158Use of uninitialized value $foo3[1] in chop at - line 6.
1159Use of uninitialized value $foo4[1] in chop at - line 7.
1160Use of uninitialized value $foo5[1] in sprintf at - line 8.
1161Use of uninitialized value $foo6[1] in sprintf at - line 9.
1162Use of uninitialized value $foo7{"baz"} in sprintf at - line 10.
1163Use of uninitialized value $foo8{"baz"} in sprintf at - line 11.
1164Use of uninitialized value $m1 in sprintf at - line 12.
1165Use of uninitialized value $foo9[1] in sprintf at - line 12.
1166Use of uninitialized value in sprintf at - line 12.
1167Use of uninitialized value $m2 in sprintf at - line 13.
1168Use of uninitialized value $foo10[1] in sprintf at - line 13.
1169Use of uninitialized value in sprintf at - line 13.
1170Use of uninitialized value $foo11{"baz"} in join or string at - line 14.
1171Use of uninitialized value $foo12{"baz"} in join or string at - line 15.
1172Use of uninitialized value within %foo13 in join or string at - line 16.
1173Use of uninitialized value within %foo14 in join or string at - line 17.
1174########
1175use warnings 'uninitialized';
1176my ($v);
1177
1178undef $^A; $v = $^A + ${^FOO}; # should output '^A' not chr(1)
1179*GLOB1 = *GLOB2;
1180$v = $GLOB1 + 1;
1181$v = $GLOB2 + 1;
1182EXPECT
1183Use of uninitialized value $^FOO in addition (+) at - line 4.
1184Use of uninitialized value $^A in addition (+) at - line 4.
1185Use of uninitialized value $GLOB1 in addition (+) at - line 6.
1186Use of uninitialized value $GLOB2 in addition (+) at - line 7.
1187########
1188use warnings 'uninitialized';
1189my ($v);
1190
1191# check hash key is sanitised
1192my %h = ("\0011\002\r\n\t\f\"\\abcdefghijklmnopqrstuvwxyz", undef);
1193$v = join '', %h;
1194EXPECT
1195Use of uninitialized value $h{"\0011\2\r\n\t\f\"\\abcdefghijklm"...} in join or string at - line 6.
1196########
1197use warnings 'uninitialized';
1198my ($m1, $v);
1199our ($g1);
1200
1201$v = eval { \&$m1 };
1202$v = eval { \&$g1 };
1203
1204my @a;
1205@a = splice @a, $m1, $g1;
1206$v = 1 + splice @a, $m1, $g1;
1207
1208my $x = bless [], 'Z';
1209eval { $x->$m1() };
1210
1211eval { &$m1() };
1212eval { &$g1() };
1213
1214warn $m1,$g1,"foo";
1215
1216eval { die $m1, $g1 };
1217
1218reset $m1;
1219reset $g1;
1220EXPECT
1221Use of uninitialized value $m1 in subroutine dereference at - line 5.
1222Use of uninitialized value $g1 in subroutine dereference at - line 6.
1223Use of uninitialized value $m1 in splice at - line 9.
1224Use of uninitialized value $g1 in splice at - line 9.
1225Use of uninitialized value $m1 in splice at - line 10.
1226Use of uninitialized value $g1 in splice at - line 10.
1227Use of uninitialized value in addition (+) at - line 10.
1228Use of uninitialized value $m1 in method lookup at - line 13.
1229Use of uninitialized value in subroutine entry at - line 15.
1230Use of uninitialized value in subroutine entry at - line 16.
1231Use of uninitialized value $m1 in warn at - line 18.
1232Use of uninitialized value $g1 in warn at - line 18.
1233foo at - line 18.
1234Use of uninitialized value $m1 in die at - line 20.
1235Use of uninitialized value $g1 in die at - line 20.
1236Use of uninitialized value $m1 in symbol reset at - line 22.
1237Use of uninitialized value $g1 in symbol reset at - line 23.
1238########
1239use warnings 'uninitialized';
1240my ($m1);
1241our ($g1);
1242
1243open FOO; # accesses $FOO
1244my $foo = 'FO';
1245open($foo."O"); # accesses $FOO
1246open my $x; # accesses ${*$x}
1247open $foobar; # accesses ${*$foobar}
1248my $y;
1249open $y, $m1;
1250eval { open $y, $m1, $g1 };
1251open $y, '<', $g1;
1252
1253sysopen $y, $m1, $m2;
1254sysopen $y, $m1, $g1, $m2;
1255
1256my $old = umask;
1257umask $m1;
1258umask $g1;
1259umask $old;
1260
1261binmode STDIN, $m1;
1262EXPECT
1263Use of uninitialized value $FOO in open at - line 5.
1264Use of uninitialized value in open at - line 7.
1265Use of uninitialized value in open at - line 8.
1266Use of uninitialized value in open at - line 9.
1267Use of uninitialized value $m1 in open at - line 11.
1268Use of uninitialized value $m1 in open at - line 12.
1269Use of uninitialized value $g1 in open at - line 13.
1270Use of uninitialized value $m2 in sysopen at - line 15.
1271Use of uninitialized value $m1 in sysopen at - line 15.
1272Use of uninitialized value $m2 in sysopen at - line 16.
1273Use of uninitialized value $g1 in sysopen at - line 16.
1274Use of uninitialized value $m1 in sysopen at - line 16.
1275Use of uninitialized value $m1 in umask at - line 19.
1276Use of uninitialized value $g1 in umask at - line 20.
1277Use of uninitialized value $m1 in binmode at - line 23.
1278########
1279use warnings 'uninitialized';
1280my ($m1);
1281our ($g1);
1282
1283eval { my $x; tie $x, $m1 };
1284
1285eval { my $x; read $m1, $x, $g1 };
1286eval { my $x; read $m1, $x, $g1, $g2 };
1287eval { my $x; sysread $m1, $x, $g1 };
1288eval { my $x; sysread $m1, $x, $g1, $g2 };
1289EXPECT
1290Use of uninitialized value $m1 in tie at - line 5.
1291Use of uninitialized value $m1 in ref-to-glob cast at - line 7.
1292Use of uninitialized value $g1 in read at - line 7.
1293Use of uninitialized value $m1 in ref-to-glob cast at - line 8.
1294Use of uninitialized value $g1 in read at - line 8.
1295Use of uninitialized value $g2 in read at - line 8.
1296Use of uninitialized value $m1 in ref-to-glob cast at - line 9.
1297Use of uninitialized value $g1 in sysread at - line 9.
1298Use of uninitialized value $m1 in ref-to-glob cast at - line 10.
1299Use of uninitialized value $g1 in sysread at - line 10.
1300Use of uninitialized value $g2 in sysread at - line 10.
1301########
1302use warnings 'uninitialized';
1303my ($m1);
1304our ($g1, @ga);
1305
1306printf $m1;
1307printf STDERR "%d%d%d%d\n", $m1, $m2, $g1, $g2;
1308printf $ga[1000];
1309printf STDERR "FOO1:%s\n", $ga[1000];
1310printf STDERR "FOO2:%s%s%s%s\n", $m1, $g1, $ga[1],$m2;
1311printf STDERR "FOO3:%s%s%s\n", "X", $ga[1],"Y";
1312EXPECT
1313Use of uninitialized value $m1 in printf at - line 5.
1314Use of uninitialized value $m1 in printf at - line 6.
1315Use of uninitialized value $m2 in printf at - line 6.
1316Use of uninitialized value $g1 in printf at - line 6.
1317Use of uninitialized value $g2 in printf at - line 6.
13180000
1319Use of uninitialized value in printf at - line 7.
1320Use of uninitialized value in printf at - line 8.
1321FOO1:
1322Use of uninitialized value $m1 in printf at - line 9.
1323Use of uninitialized value $g1 in printf at - line 9.
1324Use of uninitialized value in printf at - line 9.
1325Use of uninitialized value $m2 in printf at - line 9.
1326FOO2:
1327Use of uninitialized value in printf at - line 10.
1328FOO3:XY
1329########
1330use warnings 'uninitialized';
1331my ($m1);
1332our ($g1);
1333
1334eval { my $x; seek $x,$m1, $g1 };
1335eval { my $x; sysseek $x,$m1, $g1 };
1336eval { syswrite $m1, $g1 }; # logic changed - now won't try $g1 if $m1 is bad
1337# eval { syswrite STDERR, $m1 }; # XXX under utf8, can give
1338# eval { syswrite STDERR, $m1, $g1 }; # XXX different warnings
1339# eval { syswrite STDERR, $m1, $g1, $m2 };
1340eval { my $x; socket $x, $m1, $g1, $m2 };
1341eval { my ($x,$y); socketpair $x, $y, $m1, $g1, $m2 };
1342EXPECT
1343Use of uninitialized value $x in ref-to-glob cast at - line 5.
1344Use of uninitialized value $g1 in seek at - line 5.
1345Use of uninitialized value $m1 in seek at - line 5.
1346Use of uninitialized value $x in ref-to-glob cast at - line 6.
1347Use of uninitialized value $g1 in sysseek at - line 6.
1348Use of uninitialized value $m1 in sysseek at - line 6.
1349Use of uninitialized value $m1 in ref-to-glob cast at - line 7.
1350Use of uninitialized value $m2 in socket at - line 11.
1351Use of uninitialized value $g1 in socket at - line 11.
1352Use of uninitialized value $m1 in socket at - line 11.
1353Use of uninitialized value $m2 in socketpair at - line 12.
1354Use of uninitialized value $g1 in socketpair at - line 12.
1355Use of uninitialized value $m1 in socketpair at - line 12.
1356########
1357use Config;
1358BEGIN {
1359 if ( !$Config{d_flock} &&
1360 !$Config{d_fcntl_can_lock} &&
1361 !$Config{d_lockf} ) {
1362 print <<EOM ;
1363SKIPPED
1364# flock not present
1365EOM
1366 exit ;
1367 }
1368}
1369use warnings 'uninitialized';
1370our ($g1);
1371
1372eval { my $x; flock $x, $g1 };
1373EXPECT
1374Use of uninitialized value $x in ref-to-glob cast at - line 16.
1375Use of uninitialized value $g1 in flock at - line 16.
1376########
1377use warnings 'uninitialized';
1378my ($m1, $v);
1379our ($g1);
1380
1381stat;
1382lstat;
1383stat $m1;
1384lstat $g1;
1385
1386$v = -R $m1;
1387$v = -W $m1;
1388$v = -X $m1;
1389$v = -r $m1;
1390$v = -w $m1;
1391$v = -x $m1;
1392$v = -e $m1;
1393$v = -o $m1;
1394$v = -O $m1;
1395$v = -z $m1;
1396$v = -s $m1;
1397$v = -M $m1;
1398$v = -A $m1;
1399$v = -C $m1;
1400$v = -S $m1;
1401$v = -c $m1;
1402$v = -b $m1;
1403$v = -f $m1;
1404$v = -d $m1;
1405$v = -p $m1;
1406$v = -l $m1;
1407$v = -u $m1;
1408$v = -g $m1;
1409# $v = -k $m1; # XXX this is a no-op under win32
1410$v = -t $m1;
1411$v = -T $m1;
1412$v = -B $m1;
1413EXPECT
1414Use of uninitialized value $_ in stat at - line 5.
1415Use of uninitialized value $_ in lstat at - line 6.
1416Use of uninitialized value $m1 in stat at - line 7.
1417Use of uninitialized value $g1 in lstat at - line 8.
1418Use of uninitialized value $m1 in -R at - line 10.
1419Use of uninitialized value $m1 in -W at - line 11.
1420Use of uninitialized value $m1 in -X at - line 12.
1421Use of uninitialized value $m1 in -r at - line 13.
1422Use of uninitialized value $m1 in -w at - line 14.
1423Use of uninitialized value $m1 in -x at - line 15.
1424Use of uninitialized value $m1 in -e at - line 16.
1425Use of uninitialized value $m1 in -o at - line 17.
1426Use of uninitialized value $m1 in -O at - line 18.
1427Use of uninitialized value $m1 in -z at - line 19.
1428Use of uninitialized value $m1 in -s at - line 20.
1429Use of uninitialized value $m1 in -M at - line 21.
1430Use of uninitialized value $m1 in -A at - line 22.
1431Use of uninitialized value $m1 in -C at - line 23.
1432Use of uninitialized value $m1 in -S at - line 24.
1433Use of uninitialized value $m1 in -c at - line 25.
1434Use of uninitialized value $m1 in -b at - line 26.
1435Use of uninitialized value $m1 in -f at - line 27.
1436Use of uninitialized value $m1 in -d at - line 28.
1437Use of uninitialized value $m1 in -p at - line 29.
1438Use of uninitialized value $m1 in -l at - line 30.
1439Use of uninitialized value $m1 in -u at - line 31.
1440Use of uninitialized value $m1 in -g at - line 32.
1441Use of uninitialized value $m1 in -t at - line 34.
1442Use of uninitialized value $m1 in -T at - line 35.
1443Use of uninitialized value $m1 in -B at - line 36.
1444########
1445use warnings 'uninitialized';
1446my ($m1, $v);
1447our ($g1);
1448
1449$v = localtime $m1;
1450$v = gmtime $g1;
1451EXPECT
1452Use of uninitialized value $m1 in localtime at - line 5.
1453Use of uninitialized value $g1 in gmtime at - line 6.
1454########
1455use warnings 'uninitialized';
1456my ($m1, $m2, $v);
1457
1458$v = eval;
1459$v = eval $m1;
1460$m2 = q($m1); $v = 1 + eval $m2;
1461EXPECT
1462Use of uninitialized value $_ in eval "string" at - line 4.
1463Use of uninitialized value $m1 in eval "string" at - line 5.
1464Use of uninitialized value in addition (+) at - line 6.
1465########
1466use warnings 'uninitialized';
1467my ($m1);
1468
1469exit $m1;
1470EXPECT
1471Use of uninitialized value $m1 in exit at - line 4.
1472########
1473use warnings 'uninitialized';
1474my $undef;
1475
1476if ($undef == 3) {
1477} elsif ($undef == 0) {
1478}
1479EXPECT
1480Use of uninitialized value $undef in numeric eq (==) at - line 4.
1481Use of uninitialized value $undef in numeric eq (==) at - line 5.
1482########
1483# TODO long standing bug - conditions of while loops
1484use warnings;
1485
1486my $c;
1487my $d = 1;
1488while ($c == 0 && $d) {
1489 # a
1490 # few
1491 # blank
1492 # lines
1493 undef $d;
1494}
1495EXPECT
1496Use of uninitialized value $c in numeric eq (==) at - line 5.
1497Use of uninitialized value $c in numeric eq (==) at - line 5.
1498########
1499# TODO long standing bug - conditions of until loops
1500use warnings;
1501
1502my $c;
1503my $d;
1504until ($c == 1) {
1505 # a
1506 # few
1507 # blank
1508 # lines
1509 $c = 1 if ++$d == 2;
1510}
1511EXPECT
1512Use of uninitialized value $c in numeric eq (==) at - line 5.
1513Use of uninitialized value $c in numeric eq (==) at - line 5.
1514########
1515# TODO long standing bug - conditions of for loops
1516use warnings;
1517
1518my $c;
1519my $d;
1520for ($d = 1; $c == 0 && $d; ) {
1521 # a
1522 # few
1523 # blank
1524 # lines
1525 undef $d;
1526}
1527
1528my $e;
1529for ($d = 2; $d > 0; $e = !($c == 0)) {
1530 # a
1531 # few
1532 # blank
1533 # lines
1534 --$d;
1535}
1536EXPECT
1537Use of uninitialized value $c in numeric eq (==) at - line 5.
1538Use of uninitialized value $c in numeric eq (==) at - line 5.
1539Use of uninitialized value $c in numeric eq (==) at - line 14.
1540Use of uninitialized value $c in numeric eq (==) at - line 14.
1541########
1542# TODO long standing bug - more general variant of the above problem
1543use warnings;
1544my $undef;
1545
1546my $a = $undef + 1;
1547my $b
1548 = $undef
1549 + 1;
1550EXPECT
1551Use of uninitialized value $undef in addition (+) at - line 4.
1552Use of uninitialized value $undef in addition (+) at - line 7.
1553########
1554use warnings 'uninitialized';
1555my ($r1, $r2);
1556$_ = undef;
1557$v = reverse;
1558$v = reverse $r1;
1559$v = reverse "abc", $r2, "def";
1560EXPECT
1561Use of uninitialized value in reverse at - line 4.
1562Use of uninitialized value $r1 in reverse at - line 5.
1563Use of uninitialized value $r2 in reverse at - line 6.
1564########
1565use warnings 'uninitialized';
1566#
1567# ops that can return undef for defined args
1568# split into separate tests to diagnose the cause of daily build smoke
1569#
1570# *** `` not tested: Windows produces an error on STDERR
1571# *** ditto qx()
1572# *** pipe() not tested
1573# *** ioctl not tested
1574# *** socket not tested
1575# *** socketpair not tested
1576# *** bind not tested
1577# *** connect not tested
1578# *** listen not tested
1579# *** shutdown not tested
1580# *** setsockopt not tested
1581# *** getpeername not tested
1582# *** readdir not tested
1583# *** telldir not tested
1584# *** seekdir not tested
1585# *** rewinddir not tested
1586# *** closedir not tested
1587# *** gmtime not tested
1588# *** alarm not tested
1589# *** semget not tested
1590# *** getlogin not tested
1591EXPECT
1592########
1593use warnings 'uninitialized';
1594if ($^O eq 'MSWin32') {
1595 print <<'EOM';
1596SKIPPED
1597# `` produces an error on STDERR on Win32
1598EOM
1599 exit;
1600}
1601my $nocmd = '/no/such/command';
1602my $v;
1603$v = 1 + `$nocmd`;
1604EXPECT
1605Use of uninitialized value in addition (+) at - line 11.
1606########
1607use warnings 'uninitialized';
1608if ($^O eq 'MSWin32') {
1609 print <<'EOM';
1610SKIPPED
1611# qx produces an error on STDERR on Win32
1612EOM
1613 exit;
1614}
1615my $nocmd = '/no/such/command';
1616my $v;
1617$v = 1 + qx($nocmd);
1618EXPECT
1619Use of uninitialized value in addition (+) at - line 11.
1620########
1621use warnings 'uninitialized';
1622my $nan = "NaN";
1623if ($nan == $nan) {
1624 print <<'EOM';
1625SKIPPED
1626# NaN not supported here.
1627EOM
1628 exit;
1629}
1630my $v;
1631$v = 1 + ($nan <=> 1);
1632EXPECT
1633Use of uninitialized value in addition (+) at - line 11.
1634########
1635use warnings 'uninitialized';
1636if ($^O eq 'MSWin32') {
1637 print <<'EOM';
1638SKIPPED
1639# -k produces no warning on Win32
1640EOM
1641 exit;
1642}
1643my $nofile = '/no/such/file';
1644my $v;
1645$v = 1 + -k $nofile;
1646EXPECT
1647Use of uninitialized value in addition (+) at - line 11.
1648########
1649use warnings 'uninitialized';
1650my $nofile = '/no/such/file';
1651my $v;
1652my $f = "";
1653$v = 1 + open($f, $nofile);
1654EXPECT
1655Use of uninitialized value in addition (+) at - line 5.
1656########
1657use warnings 'uninitialized';
1658my $nofile = '/no/such/file';
1659my $v;
1660$v = 1 + fileno($nofile);
1661EXPECT
1662Use of uninitialized value in addition (+) at - line 4.
1663########
1664use warnings 'uninitialized';
1665my $nofile = '/no/such/file';
1666my $v;
1667$v = 1 + binmode($nofile);
1668EXPECT
1669Use of uninitialized value in addition (+) at - line 4.
1670########
1671use warnings 'uninitialized';
1672my $nofile = '/no/such/file';
1673my $v;
1674$v = 1 + tied($nofile);
1675EXPECT
1676Use of uninitialized value in addition (+) at - line 4.
1677########
1678use warnings 'uninitialized';
1679my $nofile = '/no/such/file';
1680my $v;
1681$v = 1 + getc($nofile);
1682EXPECT
1683Use of uninitialized value in addition (+) at - line 4.
1684########
1685use warnings 'uninitialized';
1686my $nofile = '/no/such/file';
1687my $v;
1688$v = 1 + sysread($nofile, my $buf,1);
1689EXPECT
1690Use of uninitialized value in addition (+) at - line 4.
1691########
1692use warnings 'uninitialized';
1693my $nofile = '/no/such/file';
1694my $v;
1695$v = 1 + eval { send($nofile, $buf,0) };
1696EXPECT
1697Use of uninitialized value in addition (+) at - line 4.
1698########
1699use warnings 'uninitialized';
1700my $nofile = '/no/such/file';
1701my $v;
1702my $fh = "";
1703$v = 1 + eval { accept($fh, $nofile) };
1704EXPECT
1705Use of uninitialized value in addition (+) at - line 5.
1706########
1707use warnings 'uninitialized';
1708my $nofile = '/no/such/file';
1709my $v;
1710$v = 1 + (-r $nofile);
1711EXPECT
1712Use of uninitialized value in addition (+) at - line 4.
1713########
1714use warnings 'uninitialized';
1715my $nofile = '/no/such/file';
1716my $v;
1717$v = 1 + (-w $nofile);
1718EXPECT
1719Use of uninitialized value in addition (+) at - line 4.
1720########
1721use warnings 'uninitialized';
1722my $nofile = '/no/such/file';
1723my $v;
1724$v = 1 + (-x $nofile);
1725EXPECT
1726Use of uninitialized value in addition (+) at - line 4.
1727########
1728use warnings 'uninitialized';
1729my $nofile = '/no/such/file';
1730my $v;
1731$v = 1 + (-o $nofile);
1732EXPECT
1733Use of uninitialized value in addition (+) at - line 4.
1734########
1735use warnings 'uninitialized';
1736my $nofile = '/no/such/file';
1737my $v;
1738$v = 1 + (-R $nofile);
1739EXPECT
1740Use of uninitialized value in addition (+) at - line 4.
1741########
1742use warnings 'uninitialized';
1743my $nofile = '/no/such/file';
1744my $v;
1745$v = 1 + (-W $nofile);
1746EXPECT
1747Use of uninitialized value in addition (+) at - line 4.
1748########
1749use warnings 'uninitialized';
1750my $nofile = '/no/such/file';
1751my $v;
1752$v = 1 + (-X $nofile);
1753EXPECT
1754Use of uninitialized value in addition (+) at - line 4.
1755########
1756use warnings 'uninitialized';
1757my $nofile = '/no/such/file';
1758my $v;
1759$v = 1 + (-O $nofile);
1760EXPECT
1761Use of uninitialized value in addition (+) at - line 4.
1762########
1763use warnings 'uninitialized';
1764my $nofile = '/no/such/file';
1765my $v;
1766$v = 1 + (-e $nofile);
1767EXPECT
1768Use of uninitialized value in addition (+) at - line 4.
1769########
1770use warnings 'uninitialized';
1771my $nofile = '/no/such/file';
1772my $v;
1773$v = 1 + (-z $nofile);
1774EXPECT
1775Use of uninitialized value in addition (+) at - line 4.
1776########
1777use warnings 'uninitialized';
1778my $nofile = '/no/such/file';
1779my $v;
1780$v = 1 + (-s $nofile);
1781EXPECT
1782Use of uninitialized value in addition (+) at - line 4.
1783########
1784use warnings 'uninitialized';
1785my $nofile = '/no/such/file';
1786my $v;
1787$v = 1 + (-f $nofile);
1788EXPECT
1789Use of uninitialized value in addition (+) at - line 4.
1790########
1791use warnings 'uninitialized';
1792my $nofile = '/no/such/file';
1793my $v;
1794$v = 1 + (-d $nofile);
1795EXPECT
1796Use of uninitialized value in addition (+) at - line 4.
1797########
1798use warnings 'uninitialized';
1799my $nofile = '/no/such/file';
1800my $v;
1801$v = 1 + (-l $nofile);
1802EXPECT
1803Use of uninitialized value in addition (+) at - line 4.
1804########
1805use warnings 'uninitialized';
1806my $nofile = '/no/such/file';
1807my $v;
1808$v = 1 + (-p $nofile);
1809EXPECT
1810Use of uninitialized value in addition (+) at - line 4.
1811########
1812use warnings 'uninitialized';
1813my $nofile = '/no/such/file';
1814my $v;
1815$v = 1 + (-S $nofile);
1816EXPECT
1817Use of uninitialized value in addition (+) at - line 4.
1818########
1819use warnings 'uninitialized';
1820my $nofile = '/no/such/file';
1821my $v;
1822$v = 1 + (-b $nofile);
1823EXPECT
1824Use of uninitialized value in addition (+) at - line 4.
1825########
1826use warnings 'uninitialized';
1827my $nofile = '/no/such/file';
1828my $v;
1829$v = 1 + (-c $nofile);
1830EXPECT
1831Use of uninitialized value in addition (+) at - line 4.
1832########
1833use warnings 'uninitialized';
1834my $nofile = '/no/such/file';
1835my $v;
1836$v = 1 + (-t $nofile);
1837EXPECT
1838Use of uninitialized value in addition (+) at - line 4.
1839########
1840use warnings 'uninitialized';
1841my $nofile = '/no/such/file';
1842my $v;
1843$v = 1 + (-u $nofile);
1844EXPECT
1845Use of uninitialized value in addition (+) at - line 4.
1846########
1847use warnings 'uninitialized';
1848my $nofile = '/no/such/file';
1849my $v;
1850$v = 1 + (-g $nofile);
1851EXPECT
1852Use of uninitialized value in addition (+) at - line 4.
1853########
1854use warnings 'uninitialized';
1855my $nofile = '/no/such/file';
1856my $v;
1857$v = 1 + (-T $nofile);
1858EXPECT
1859Use of uninitialized value in addition (+) at - line 4.
1860########
1861use warnings 'uninitialized';
1862my $nofile = '/no/such/file';
1863my $v;
1864$v = 1 + (-B $nofile);
1865EXPECT
1866Use of uninitialized value in addition (+) at - line 4.
1867########
1868use warnings 'uninitialized';
1869my $nofile = '/no/such/file';
1870my $v;
1871$v = 1 + (-M $nofile);
1872EXPECT
1873Use of uninitialized value in addition (+) at - line 4.
1874########
1875use warnings 'uninitialized';
1876my $nofile = '/no/such/file';
1877my $v;
1878$v = 1 + (-A $nofile);
1879EXPECT
1880Use of uninitialized value in addition (+) at - line 4.
1881########
1882use warnings 'uninitialized';
1883my $nofile = '/no/such/file';
1884my $v;
1885$v = 1 + (-C $nofile);
1886EXPECT
1887Use of uninitialized value in addition (+) at - line 4.
1888########
1889use warnings 'uninitialized';
1890my $nofile = '/no/such/file';
1891my $v;
1892$v = 1 + eval { readlink $nofile };
1893EXPECT
1894Use of uninitialized value in addition (+) at - line 4.
1895########
1896use warnings 'uninitialized';
1897my $nofile = '/no/such/file';
1898my $v;
1899$v = 1 + opendir($f, $nofile);
1900EXPECT
1901Use of uninitialized value in addition (+) at - line 4.
1902########
1903use warnings 'uninitialized';
1904my $nofile = '/no/such/file';
1905my $v;
1906$v = 1 + undef;
1907EXPECT
1908Use of uninitialized value in addition (+) at - line 4.
1909########
1910use warnings 'uninitialized';
1911my $nofile = '/no/such/file';
1912my $v;
1913my $x = 1; $v = 1 + undef($x);
1914EXPECT
1915Use of uninitialized value in addition (+) at - line 4.
1916########
1917use warnings 'uninitialized';
1918my $v;
1919my $emptys = "";
1920$v = 1 + substr($emptys,2,1);
1921EXPECT
1922Use of uninitialized value in addition (+) at - line 4.
1923########
1924use warnings 'uninitialized';
1925my $v;
1926my @emptya;
1927$v = 1 + each @emptya;
1928EXPECT
1929Use of uninitialized value in addition (+) at - line 4.
1930########
1931use warnings 'uninitialized';
1932my $v;
1933my %emptyh;
1934$v = 1 + each %emptyh;
1935EXPECT
1936Use of uninitialized value in addition (+) at - line 4.
1937########
1938use warnings 'uninitialized';
1939my $v;
1940my @emptya;
1941$v = 1 + sort @emptya;
1942EXPECT
1943Use of uninitialized value in addition (+) at - line 4.
1944########
1945use warnings 'uninitialized';
1946my $v;
1947my $zero = 0; $v = 1 + caller($zero);
1948EXPECT
1949Use of uninitialized value in addition (+) at - line 3.
1950########
1951use warnings 'uninitialized';
1952my $nofile = '/no/such/file';
1953my $v;
1954$v = 1 + do $nofile;
1955EXPECT
1956Use of uninitialized value in addition (+) at - line 4.
1957########
1958use warnings 'uninitialized';
1959my $v;
1960my $fn = sub {};
1961$v = 1 + prototype $fn;
1962EXPECT
1963Use of uninitialized value in addition (+) at - line 4.
1964########
1965use warnings 'uninitialized';
1966my $v;
1967my $fn = sub {};
1968$v = 1 + (1 ~~ $fn);
1969EXPECT
1970Use of uninitialized value in addition (+) at - line 4.
1971########
1972use warnings 'uninitialized';
1973my $v;
1974my $f = "";
1975$v = 1 + (print STDIN $f); # print to STDIN returns undef
1976EXPECT
1977Use of uninitialized value in addition (+) at - line 4.
1978########
1979use warnings 'uninitialized';
1980my $v;
1981my $f = "";
1982$v = 1 + (printf STDIN "%s", $f);
1983EXPECT
1984Use of uninitialized value in addition (+) at - line 4.
1985########
1986use warnings 'uninitialized';
1987my $v;
1988my $f = "";
1989{ use feature 'say'; $v = 1 + (say STDIN "%s", $f); }
1990EXPECT
1991Use of uninitialized value in addition (+) at - line 4.
1992########
1993use warnings 'uninitialized';
1994my $v;
1995my $f = "";
1996$v = 1 + (unpack("",$f));
1997EXPECT
1998Use of uninitialized value in addition (+) at - line 4.
1999########
2000use warnings 'uninitialized';
2001my $nofile = '/no/such/file';
2002my $v;
2003my $f = "";
2004$v = 1 + sysopen($f, $nofile, 0);
2005EXPECT
2006Use of uninitialized value in addition (+) at - line 5.
2007########
2008use warnings 'uninitialized';
2009my $v;
2010{ my $x = -1; $v = 1 + sysseek(DATA, $x, 0); }
2011__END__
2012EXPECT
2013Use of uninitialized value in addition (+) at - line 3.
2014########
2015use warnings 'uninitialized';
2016delete $::{'Foo::'};
2017my $moo = $Foo::BAR + 42;
2018__END__
2019EXPECT
2020Use of uninitialized value in addition (+) at - line 3.
2021########
2022use warnings 'uninitialized';
2023use constant {u=>undef, v=>undef};
2024sub foo () {u}
2025sub foo () {v}
2026EXPECT