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