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