Merge branch 'blead' into smartmatch
[p5sagit/p5-mst-13.2.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 $s4 in chomp at - line 5.
384 Use of uninitialized value $s3 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 $y in chomp at - line 8.
400 Use of uninitialized value ${$/} 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, $v);
450 our ($g1);
451
452 my ($x1,$x2);
453 $v = $x1 << $m1;
454 $v = $x2 << $g1;
455 EXPECT
456 Use of uninitialized value $m1 in left bitshift (<<) at - line 6.
457 Use of uninitialized value $x1 in left bitshift (<<) at - line 6.
458 Use of uninitialized value $g1 in left bitshift (<<) at - line 7.
459 Use of uninitialized value $x2 in left bitshift (<<) at - line 7.
460 ########
461 use warnings 'uninitialized';
462 my ($m1, $m2, $v);
463 our ($g1, $g2);
464
465 use integer;
466 $v = $m1 + $g1;
467 $v = $m1 - $g1;
468 $v = $m1 * $g1;
469 eval {$v = $m1 / $g1};
470 $v = $m2 / 2;
471 eval {$v = $m1 % $g1};
472 $v = $m2 % 2;
473 $v = $m1 < $g1;
474 $v = $m1 > $g1;
475 $v = $m1 <= $g1;
476 $v = $m1 >= $g1;
477 $v = $m1 == $g1;
478 $v = $m1 != $g1;
479 $v = $m1 <=> $g1;
480 $v = -$m1;
481 EXPECT
482 Use of uninitialized value $g1 in integer addition (+) at - line 6.
483 Use of uninitialized value $m1 in integer addition (+) at - line 6.
484 Use of uninitialized value $g1 in integer subtraction (-) at - line 7.
485 Use of uninitialized value $m1 in integer subtraction (-) at - line 7.
486 Use of uninitialized value $g1 in integer multiplication (*) at - line 8.
487 Use of uninitialized value $m1 in integer multiplication (*) at - line 8.
488 Use of uninitialized value $g1 in integer division (/) at - line 9.
489 Use of uninitialized value $m2 in integer division (/) at - line 10.
490 Use of uninitialized value $g1 in integer modulus (%) at - line 11.
491 Use of uninitialized value $m1 in integer modulus (%) at - line 11.
492 Use of uninitialized value $m2 in integer modulus (%) at - line 12.
493 Use of uninitialized value $g1 in integer lt (<) at - line 13.
494 Use of uninitialized value $m1 in integer lt (<) at - line 13.
495 Use of uninitialized value $g1 in integer gt (>) at - line 14.
496 Use of uninitialized value $m1 in integer gt (>) at - line 14.
497 Use of uninitialized value $g1 in integer le (<=) at - line 15.
498 Use of uninitialized value $m1 in integer le (<=) at - line 15.
499 Use of uninitialized value $g1 in integer ge (>=) at - line 16.
500 Use of uninitialized value $m1 in integer ge (>=) at - line 16.
501 Use of uninitialized value $g1 in integer eq (==) at - line 17.
502 Use of uninitialized value $m1 in integer eq (==) at - line 17.
503 Use of uninitialized value $g1 in integer ne (!=) at - line 18.
504 Use of uninitialized value $m1 in integer ne (!=) at - line 18.
505 Use of uninitialized value $g1 in integer comparison (<=>) at - line 19.
506 Use of uninitialized value $m1 in integer comparison (<=>) at - line 19.
507 Use of uninitialized value $m1 in integer negation (-) at - line 20.
508 ########
509 use warnings 'uninitialized';
510 my ($m1, $m2, $v);
511 our ($g1, $g2);
512
513 $v = int($g1);
514 $v = abs($g2);
515 EXPECT
516 Use of uninitialized value $g1 in int at - line 5.
517 Use of uninitialized value $g2 in abs at - line 6.
518 ########
519 use warnings 'uninitialized';
520 my ($m1, $m2, $v);
521 our ($g1);
522
523 $v = pack $m1;
524 $v = pack "i*", $m2, $g1, $g2;
525 my @unpack = unpack $m1, $m2;
526 EXPECT
527 Use of uninitialized value $m1 in pack at - line 5.
528 Use of uninitialized value $m2 in pack at - line 6.
529 Use of uninitialized value $g1 in pack at - line 6.
530 Use of uninitialized value $g2 in pack at - line 6.
531 Use of uninitialized value $m1 in unpack at - line 7.
532 Use of uninitialized value $m2 in unpack at - line 7.
533 ########
534 use warnings 'uninitialized';
535 my ($m1);
536 our ($g1);
537
538 my @sort;
539 @sort = sort $m1, $g1;
540 @sort = sort {$a <=> $b} $m1, $g1;
541 sub sortf {$a-1 <=> $b-1};
542 @sort = sort  &sortf, $m1, $g1;
543 EXPECT
544 Use of uninitialized value $m1 in sort at - line 6.
545 Use of uninitialized value $g1 in sort at - line 6.
546 Use of uninitialized value $m1 in sort at - line 6.
547 Use of uninitialized value $g1 in sort at - line 6.
548 Use of uninitialized value $m1 in sort at - line 7.
549 Use of uninitialized value $g1 in sort at - line 7.
550 Use of uninitialized value $m1 in sort at - line 7.
551 Use of uninitialized value $g1 in sort at - line 7.
552 Use of uninitialized value $a in subtraction (-) at - line 8.
553 Use of uninitialized value $b in subtraction (-) at - line 8.
554 Use of uninitialized value $m1 in sort at - line 9.
555 Use of uninitialized value $g1 in sort at - line 9.
556 Use of uninitialized value $m1 in sort at - line 9.
557 Use of uninitialized value $m1 in sort at - line 9.
558 Use of uninitialized value $g1 in sort at - line 9.
559 Use of uninitialized value $g1 in sort at - line 9.
560 ########
561 use warnings 'uninitialized';
562 my ($m1, $m2, $v);
563 our ($g1);
564
565 eval { $v = $m1 / $g1 };
566 $v = $m2 / 2;
567 eval { $v = $m1 % $g1 };
568 $v = $m2 % 2;
569 $v = $m1 == $g1;
570 $v = $m1 >= $g1;
571 $v = $m1 >  $g1;
572 $v = $m1 <= $g1;
573 $v = $m1 <  $g1;
574 $v = $m1 *  $g1;
575 $v = $m1 <=>$g1;
576 $v = $m1 != $g1;
577 $v = $m1   -$g1;
578 $v = $m1 ** $g1;
579 $v = $m1 +  $g1;
580 $v = $m1 -  $g1;
581 EXPECT
582 Use of uninitialized value $g1 in division (/) at - line 5.
583 Use of uninitialized value $m1 in division (/) at - line 5.
584 Use of uninitialized value $m2 in division (/) at - line 6.
585 Use of uninitialized value $g1 in modulus (%) at - line 7.
586 Use of uninitialized value $m1 in modulus (%) at - line 7.
587 Use of uninitialized value $m2 in modulus (%) at - line 8.
588 Use of uninitialized value $g1 in numeric eq (==) at - line 9.
589 Use of uninitialized value $m1 in numeric eq (==) at - line 9.
590 Use of uninitialized value $g1 in numeric ge (>=) at - line 10.
591 Use of uninitialized value $m1 in numeric ge (>=) at - line 10.
592 Use of uninitialized value $g1 in numeric gt (>) at - line 11.
593 Use of uninitialized value $m1 in numeric gt (>) at - line 11.
594 Use of uninitialized value $g1 in numeric le (<=) at - line 12.
595 Use of uninitialized value $m1 in numeric le (<=) at - line 12.
596 Use of uninitialized value $g1 in numeric lt (<) at - line 13.
597 Use of uninitialized value $m1 in numeric lt (<) at - line 13.
598 Use of uninitialized value $g1 in multiplication (*) at - line 14.
599 Use of uninitialized value $m1 in multiplication (*) at - line 14.
600 Use of uninitialized value $g1 in numeric comparison (<=>) at - line 15.
601 Use of uninitialized value $m1 in numeric comparison (<=>) at - line 15.
602 Use of uninitialized value $g1 in numeric ne (!=) at - line 16.
603 Use of uninitialized value $m1 in numeric ne (!=) at - line 16.
604 Use of uninitialized value $g1 in subtraction (-) at - line 17.
605 Use of uninitialized value $m1 in subtraction (-) at - line 17.
606 Use of uninitialized value $g1 in exponentiation (**) at - line 18.
607 Use of uninitialized value $m1 in exponentiation (**) at - line 18.
608 Use of uninitialized value $g1 in addition (+) at - line 19.
609 Use of uninitialized value $m1 in addition (+) at - line 19.
610 Use of uninitialized value $g1 in subtraction (-) at - line 20.
611 Use of uninitialized value $m1 in subtraction (-) at - line 20.
612 ########
613 use warnings 'uninitialized';
614 my ($m1, $v);
615 our ($g1);
616
617 $v = *global1{$m1};
618 $v = prototype $g1;
619 $v = bless [], $g1;
620 $v = `$m1`;
621
622 $v = $m1 . $g1;
623 EXPECT
624 Use of uninitialized value $m1 in glob elem at - line 5.
625 Use of uninitialized value $g1 in subroutine prototype at - line 6.
626 Use of uninitialized value $g1 in bless at - line 7.
627 Use of uninitialized value $m1 in quoted execution (``, qx) at - line 8.
628 Use of uninitialized value $m1 in concatenation (.) or string at - line 10.
629 Use of uninitialized value $g1 in concatenation (.) or string at - line 10.
630 ########
631 use warnings 'uninitialized';
632 my ($m1);
633 our ($g1, $g2);
634
635 /y/;
636 /$m1/;
637 /$g1/;
638
639 s/y/z/;         undef $_;
640 s/$m1/z/;       undef $_;
641 s//$g1/;        undef $_;
642 s/$m1/$g1/;     undef $_;
643 tr/x/y/;        undef $_;
644
645 my $_; 
646 /y/;
647 /$m1/;
648 /$g1/;
649 s/y/z/;         undef $_;
650 s/$m1/z/;       undef $_;
651 s//$g1/;        undef $_;
652 s/$m1/$g1/;     undef $_;
653 tr/x/y/;        undef $_;
654
655 $g2 =~ /y/;
656 $g2 =~ /$m1/;
657 $g2 =~ /$g1/;
658 $g2 =~ s/y/z/;          undef $g2;
659 $g2 =~ s/$m1/z/;        undef $g2;
660 $g2 =~ s//$g1/;         undef $g2;
661 $g2 =~ s/$m1/$g1/;      undef $g2;
662 $g2 =~ tr/x/y/;         undef $g2; # XXX can't extract var name yet
663
664 my $foo = "abc";
665 $foo =~ /$m1/;
666 $foo =~ /$g1/;
667 $foo =~ s/y/z/;
668 $foo =~ s/$m1/z/;
669 $foo =~ s//$g1/;
670 $foo =~ s/$m1/$g1/;
671 $foo =~ s/./$m1/e;
672 undef $g1;
673 $m1 = '$g1';
674 $foo =~ s//$m1/ee;
675 EXPECT
676 Use of uninitialized value $_ in pattern match (m//) at - line 5.
677 Use of uninitialized value $m1 in regexp compilation at - line 6.
678 Use of uninitialized value $_ in pattern match (m//) at - line 6.
679 Use of uninitialized value $g1 in regexp compilation at - line 7.
680 Use of uninitialized value $_ in pattern match (m//) at - line 7.
681 Use of uninitialized value $_ in substitution (s///) at - line 9.
682 Use of uninitialized value $m1 in regexp compilation at - line 10.
683 Use of uninitialized value $_ in substitution (s///) at - line 10.
684 Use of uninitialized value $_ in substitution (s///) at - line 10.
685 Use of uninitialized value $_ in substitution (s///) at - line 11.
686 Use of uninitialized value $g1 in substitution (s///) at - line 11.
687 Use of uninitialized value $_ in substitution (s///) at - line 11.
688 Use of uninitialized value $g1 in substitution (s///) at - line 11.
689 Use of uninitialized value $m1 in regexp compilation at - line 12.
690 Use of uninitialized value $_ in substitution (s///) at - line 12.
691 Use of uninitialized value $_ in substitution (s///) at - line 12.
692 Use of uninitialized value $g1 in substitution iterator at - line 12.
693 Use of uninitialized value $_ in transliteration (tr///) at - line 13.
694 Use of uninitialized value $_ in pattern match (m//) at - line 16.
695 Use of uninitialized value $m1 in regexp compilation at - line 17.
696 Use of uninitialized value $_ in pattern match (m//) at - line 17.
697 Use of uninitialized value $g1 in regexp compilation at - line 18.
698 Use of uninitialized value $_ in pattern match (m//) at - line 18.
699 Use of uninitialized value $_ in substitution (s///) at - line 19.
700 Use of uninitialized value $m1 in regexp compilation at - line 20.
701 Use of uninitialized value $_ in substitution (s///) at - line 20.
702 Use of uninitialized value $_ in substitution (s///) at - line 20.
703 Use of uninitialized value $_ in substitution (s///) at - line 21.
704 Use of uninitialized value $g1 in substitution (s///) at - line 21.
705 Use of uninitialized value $_ in substitution (s///) at - line 21.
706 Use of uninitialized value $g1 in substitution (s///) at - line 21.
707 Use of uninitialized value $m1 in regexp compilation at - line 22.
708 Use of uninitialized value $_ in substitution (s///) at - line 22.
709 Use of uninitialized value $_ in substitution (s///) at - line 22.
710 Use of uninitialized value $g1 in substitution iterator at - line 22.
711 Use of uninitialized value $_ in transliteration (tr///) at - line 23.
712 Use of uninitialized value $g2 in pattern match (m//) at - line 25.
713 Use of uninitialized value $m1 in regexp compilation at - line 26.
714 Use of uninitialized value $g2 in pattern match (m//) at - line 26.
715 Use of uninitialized value $g1 in regexp compilation at - line 27.
716 Use of uninitialized value $g2 in pattern match (m//) at - line 27.
717 Use of uninitialized value $g2 in substitution (s///) at - line 28.
718 Use of uninitialized value $m1 in regexp compilation at - line 29.
719 Use of uninitialized value $g2 in substitution (s///) at - line 29.
720 Use of uninitialized value $g2 in substitution (s///) at - line 29.
721 Use of uninitialized value $g2 in substitution (s///) at - line 30.
722 Use of uninitialized value $g1 in substitution (s///) at - line 30.
723 Use of uninitialized value $g2 in substitution (s///) at - line 30.
724 Use of uninitialized value $g1 in substitution (s///) at - line 30.
725 Use of uninitialized value $m1 in regexp compilation at - line 31.
726 Use of uninitialized value $g2 in substitution (s///) at - line 31.
727 Use of uninitialized value $g2 in substitution (s///) at - line 31.
728 Use of uninitialized value $g1 in substitution iterator at - line 31.
729 Use of uninitialized value in transliteration (tr///) at - line 32.
730 Use of uninitialized value $m1 in regexp compilation at - line 35.
731 Use of uninitialized value $g1 in regexp compilation at - line 36.
732 Use of uninitialized value $m1 in regexp compilation at - line 38.
733 Use of uninitialized value $g1 in substitution (s///) at - line 39.
734 Use of uninitialized value $m1 in regexp compilation at - line 40.
735 Use of uninitialized value $g1 in substitution iterator at - line 40.
736 Use of uninitialized value $m1 in substitution iterator at - line 41.
737 Use of uninitialized value in substitution iterator at - line 44.
738 ########
739 use warnings 'uninitialized';
740 my ($m1);
741
742 { my $foo = "abc"; (substr($foo,0,0)) = ($m1) }
743 EXPECT
744 Use of uninitialized value $m1 in list assignment at - line 4.
745 ########
746 use warnings 'uninitialized';
747 our ($g1);
748
749 study;
750 study $g1;
751 EXPECT
752 Use of uninitialized value $_ in study at - line 4.
753 Use of uninitialized value $g1 in study at - line 5.
754 ########
755 use warnings 'uninitialized';
756 my ($m1);
757
758 pos()=0;
759 pos($m1)=0;
760 EXPECT
761 Use of uninitialized value $_ in scalar assignment at - line 4.
762 Use of uninitialized value $m1 in scalar assignment at - line 5.
763 ########
764 use warnings 'uninitialized';
765 my ($m1);
766 our ($g1);
767
768 $v = pos($m1) + 1;
769 $v = pos($g1) + 1;
770 $m1 = 0;
771 $g1 = "";
772 $v = pos($m1) + 1;
773 $v = pos($g1) + 1;
774 EXPECT
775 Use of uninitialized value in addition (+) at - line 5.
776 Use of uninitialized value in addition (+) at - line 6.
777 Use of uninitialized value in addition (+) at - line 9.
778 Use of uninitialized value in addition (+) at - line 10.
779 ########
780 use warnings 'uninitialized';
781 my ($m1);
782
783 { my $x = "a" x $m1 }           # NB LHS of repeat does not warn
784 { my @x = ("a") x $m1 }
785 EXPECT
786 Use of uninitialized value $m1 in repeat (x) at - line 4.
787 Use of uninitialized value $m1 in repeat (x) at - line 5.
788 ########
789 use warnings 'uninitialized';
790 my ($m1, $v);
791 our ($g1);
792
793 $v = "$m1";
794
795 $v = $m1 lt $g1;
796 $v = $m1 le $g1;
797 $v = $m1 gt $g1;
798 $v = $m1 ge $g1;
799 $v = $m1 eq $g1;
800 $v = $m1 ne $g1;
801 $v = $m1 cmp $g1;
802 EXPECT
803 Use of uninitialized value $m1 in string at - line 5.
804 Use of uninitialized value $m1 in string lt at - line 7.
805 Use of uninitialized value $g1 in string lt at - line 7.
806 Use of uninitialized value $m1 in string le at - line 8.
807 Use of uninitialized value $g1 in string le at - line 8.
808 Use of uninitialized value $m1 in string gt at - line 9.
809 Use of uninitialized value $g1 in string gt at - line 9.
810 Use of uninitialized value $m1 in string ge at - line 10.
811 Use of uninitialized value $g1 in string ge at - line 10.
812 Use of uninitialized value $m1 in string eq at - line 11.
813 Use of uninitialized value $g1 in string eq at - line 11.
814 Use of uninitialized value $m1 in string ne at - line 12.
815 Use of uninitialized value $g1 in string ne at - line 12.
816 Use of uninitialized value $m1 in string comparison (cmp) at - line 13.
817 Use of uninitialized value $g1 in string comparison (cmp) at - line 13.
818 ########
819 use warnings 'uninitialized';
820 my ($m1, $v);
821 our ($g1);
822
823 $v = atan2($m1,$g1);
824 $v = sin $m1;
825 $v = cos $m1;
826 $v = rand $m1;
827 $v = srand $m1;
828 $v = exp $m1;
829 $v = eval {log $m1};
830 $v = sqrt $m1;
831 $v = hex $m1;
832 $v = oct $m1;
833 $v = oct;
834 $v = length; # does not warn
835 EXPECT
836 Use of uninitialized value $g1 in atan2 at - line 5.
837 Use of uninitialized value $m1 in atan2 at - line 5.
838 Use of uninitialized value $m1 in sin at - line 6.
839 Use of uninitialized value $m1 in cos at - line 7.
840 Use of uninitialized value $m1 in rand at - line 8.
841 Use of uninitialized value $m1 in srand at - line 9.
842 Use of uninitialized value $m1 in exp at - line 10.
843 Use of uninitialized value $m1 in log at - line 11.
844 Use of uninitialized value $m1 in sqrt at - line 12.
845 Use of uninitialized value $m1 in hex at - line 13.
846 Use of uninitialized value $m1 in oct at - line 14.
847 Use of uninitialized value $_ in oct at - line 15.
848 ########
849 use warnings 'uninitialized';
850 my ($m1, $v);
851 our ($g1);
852
853 $v = substr $m1, $g1;
854 $v = substr $m1, $g1, $m2;
855 $v = substr $m1, $g1, $m2, $g2; undef $m1;
856 substr($m1, $g1) = $g2;         undef $m1; # NB global2
857 substr($m1, $g1, $m2) = $g2;    undef $m1; # isn't identified
858
859 $v = eval {vec ($m1, $g1, $m2)};
860 eval {vec ($m1, $g1, $m2) = $g2};       undef $m1; # ditto
861
862 $v = index  $m1, $m2;
863 $v = index  $m1, $m2, $g1;
864 $v = rindex $m1, $m2;
865 $v = rindex $m1, $m2, $g1;
866 EXPECT
867 Use of uninitialized value $g1 in substr at - line 5.
868 Use of uninitialized value $m1 in substr at - line 5.
869 Use of uninitialized value $m2 in substr at - line 6.
870 Use of uninitialized value $g1 in substr at - line 6.
871 Use of uninitialized value $m1 in substr at - line 6.
872 Use of uninitialized value $g2 in substr at - line 7.
873 Use of uninitialized value $m2 in substr at - line 7.
874 Use of uninitialized value $g1 in substr at - line 7.
875 Use of uninitialized value $m1 in substr at - line 7.
876 Use of uninitialized value $g1 in substr at - line 8.
877 Use of uninitialized value $m1 in substr at - line 8.
878 Use of uninitialized value in scalar assignment at - line 8.
879 Use of uninitialized value $m2 in substr at - line 9.
880 Use of uninitialized value $g1 in substr at - line 9.
881 Use of uninitialized value $m1 in substr at - line 9.
882 Use of uninitialized value in scalar assignment at - line 9.
883 Use of uninitialized value $m2 in vec at - line 11.
884 Use of uninitialized value $g1 in vec at - line 11.
885 Use of uninitialized value $m1 in vec at - line 11.
886 Use of uninitialized value $m2 in vec at - line 12.
887 Use of uninitialized value $g1 in vec at - line 12.
888 Use of uninitialized value $m1 in vec at - line 12.
889 Use of uninitialized value $m1 in index at - line 14.
890 Use of uninitialized value $m2 in index at - line 14.
891 Use of uninitialized value $g1 in index at - line 15.
892 Use of uninitialized value $m1 in index at - line 15.
893 Use of uninitialized value $m2 in index at - line 15.
894 Use of uninitialized value $m1 in rindex at - line 16.
895 Use of uninitialized value $m2 in rindex at - line 16.
896 Use of uninitialized value $g1 in rindex at - line 17.
897 Use of uninitialized value $m1 in rindex at - line 17.
898 Use of uninitialized value $m2 in rindex at - line 17.
899 ########
900 use warnings 'uninitialized';
901 my ($m1, $v);
902 our ($g1);
903
904 $v = sprintf $m1;
905 $v = sprintf '%d%d%d%d', $m1, $m2, $g1, $g2;
906 my $m3; eval {formline $m3 };
907 formline '@<<@<<@<<@<<', $m1, $m2, $g1, $g2;
908 EXPECT
909 Use of uninitialized value $m1 in sprintf at - line 5.
910 Use of uninitialized value $m1 in sprintf at - line 6.
911 Use of uninitialized value $m2 in sprintf at - line 6.
912 Use of uninitialized value $g1 in sprintf at - line 6.
913 Use of uninitialized value $g2 in sprintf at - line 6.
914 Use of uninitialized value $m3 in formline at - line 7.
915 Use of uninitialized value $m1 in formline at - line 8.
916 Use of uninitialized value $m2 in formline at - line 8.
917 Use of uninitialized value $g1 in formline at - line 8.
918 Use of uninitialized value $g2 in formline at - line 8.
919 ########
920 use warnings 'uninitialized';
921 my ($m1, $v);
922 our ($g1);
923
924 $v = crypt $m1, $g1;
925
926 $v = ord;
927 $v = ord $m1;
928 $v = chr;
929 $v = chr $m1;
930
931 $v = ucfirst;
932 $v = ucfirst $m1;
933 $v = lcfirst;
934 $v = lcfirst $m1;
935 $v = uc;
936 $v = uc $m1;
937 $v = lc;
938 $v = lc $m1;
939
940 $v = quotemeta;
941 $v = quotemeta $m1;
942 EXPECT
943 Use of uninitialized value $m1 in crypt at - line 5.
944 Use of uninitialized value $g1 in crypt at - line 5.
945 Use of uninitialized value $_ in ord at - line 7.
946 Use of uninitialized value $m1 in ord at - line 8.
947 Use of uninitialized value $_ in chr at - line 9.
948 Use of uninitialized value $m1 in chr at - line 10.
949 Use of uninitialized value $_ in ucfirst at - line 12.
950 Use of uninitialized value $m1 in ucfirst at - line 13.
951 Use of uninitialized value $_ in lcfirst at - line 14.
952 Use of uninitialized value $m1 in lcfirst at - line 15.
953 Use of uninitialized value $_ in uc at - line 16.
954 Use of uninitialized value $m1 in uc at - line 17.
955 Use of uninitialized value $_ in lc at - line 18.
956 Use of uninitialized value $m1 in lc at - line 19.
957 Use of uninitialized value $_ in quotemeta at - line 21.
958 Use of uninitialized value $m1 in quotemeta at - line 22.
959 ########
960 use warnings 'uninitialized';
961 my ($m1, $v1, $v2, $v3, $v4);
962 our ($g1);
963
964 ($v1,$v2,$v3,$v4) = split;
965 ($v1,$v2,$v3,$v4) = split $m1;
966 ($v1,$v2,$v3,$v4) = split $m1, $m2;
967 ($v1,$v2,$v3,$v4) = split $m1, $m2, $g1;
968
969 $v1 = join $m1;
970 $v2 = join $m1, $m2;
971 $v3 = join $m1, $m2, $m3;
972 EXPECT
973 Use of uninitialized value $_ in split at - line 5.
974 Use of uninitialized value $m1 in regexp compilation at - line 6.
975 Use of uninitialized value $_ in split at - line 6.
976 Use of uninitialized value $m1 in regexp compilation at - line 7.
977 Use of uninitialized value $m2 in split at - line 7.
978 Use of uninitialized value $m1 in regexp compilation at - line 8.
979 Use of uninitialized value $g1 in split at - line 8.
980 Use of uninitialized value $m2 in split at - line 8.
981 Use of uninitialized value $m1 in join or string at - line 10.
982 Use of uninitialized value $m1 in join or string at - line 11.
983 Use of uninitialized value $m2 in join or string at - line 11.
984 Use of uninitialized value $m1 in join or string at - line 12.
985 Use of uninitialized value $m2 in join or string at - line 12.
986 Use of uninitialized value $m3 in join or string at - line 12.
987 ########
988 use warnings 'uninitialized';
989 my ($m1, $m2, @ma, $v);
990
991 our @foo1=(1,undef); chomp @foo1;
992 my  @foo2=(1,undef); chomp @foo2;
993 our @foo3=(1,undef); chop  @foo3;
994 my  @foo4=(1,undef); chop  @foo4;
995 our @foo5=(1,undef); $v = sprintf "%s%s",@foo5;
996 my  @foo6=(1,undef); $v = sprintf "%s%s",@foo6;
997 our %foo7=('foo'=>'bar','baz'=>undef); $v = sprintf "%s%s",%foo7;
998 my  %foo8=('foo'=>'bar','baz'=>undef); $v = sprintf "%s%s",%foo8;
999 our @foo9 =(1,undef); $v = sprintf "%s%s%s%s",$m1,@foo9, $ma[2];
1000 my  @foo10=(1,undef); $v = sprintf "%s%s%s%s",$m2,@foo10,$ma[2];
1001 our %foo11=('foo'=>'bar','baz'=>undef); $v = join '', %foo11;
1002 my  %foo12=('foo'=>'bar','baz'=>undef); $v = join '', %foo12;
1003 our %foo13=(1..2000,'foo'=>'bar','baz'=>undef); $v = join '', %foo13;
1004 my  %foo14=(1..2000,'foo'=>'bar','baz'=>undef); $v = join '', %foo14;
1005 EXPECT
1006 Use of uninitialized value $foo1[1] in chomp at - line 4.
1007 Use of uninitialized value $foo2[1] in chomp at - line 5.
1008 Use of uninitialized value $foo3[1] in chop at - line 6.
1009 Use of uninitialized value $foo4[1] in chop at - line 7.
1010 Use of uninitialized value $foo5[1] in sprintf at - line 8.
1011 Use of uninitialized value $foo6[1] in sprintf at - line 9.
1012 Use of uninitialized value $foo7{"baz"} in sprintf at - line 10.
1013 Use of uninitialized value $foo8{"baz"} in sprintf at - line 11.
1014 Use of uninitialized value $m1 in sprintf at - line 12.
1015 Use of uninitialized value $foo9[1] in sprintf at - line 12.
1016 Use of uninitialized value in sprintf at - line 12.
1017 Use of uninitialized value $m2 in sprintf at - line 13.
1018 Use of uninitialized value $foo10[1] in sprintf at - line 13.
1019 Use of uninitialized value in sprintf at - line 13.
1020 Use of uninitialized value $foo11{"baz"} in join or string at - line 14.
1021 Use of uninitialized value $foo12{"baz"} in join or string at - line 15.
1022 Use of uninitialized value within %foo13 in join or string at - line 16.
1023 Use of uninitialized value within %foo14 in join or string at - line 17.
1024 ########
1025 use warnings 'uninitialized';
1026 my ($v);
1027
1028 undef $^A; $v = $^A + ${^FOO}; # should output '^A' not chr(1)
1029 *GLOB1 = *GLOB2;
1030 $v = $GLOB1 + 1;
1031 $v = $GLOB2 + 1;
1032 EXPECT
1033 Use of uninitialized value $^FOO in addition (+) at - line 4.
1034 Use of uninitialized value $^A in addition (+) at - line 4.
1035 Use of uninitialized value $GLOB1 in addition (+) at - line 6.
1036 Use of uninitialized value $GLOB2 in addition (+) at - line 7.
1037 ########
1038 use warnings 'uninitialized';
1039 my ($v);
1040
1041 # check hash key is sanitised
1042 my %h = ("\0011\002\r\n\t\f\"\\abcdefghijklmnopqrstuvwxyz", undef);
1043 $v = join '', %h;
1044 EXPECT
1045 Use of uninitialized value $h{"\0011\2\r\n\t\f\"\\abcdefghijklm"...} in join or string at - line 6.
1046 ########
1047 use warnings 'uninitialized';
1048 my ($m1, $v);
1049 our ($g1);
1050
1051 $v = eval { \&$m1 };
1052 $v = eval { \&$g1 };
1053
1054 my @a;
1055 @a = splice @a, $m1, $g1;
1056 $v = 1 + splice @a, $m1, $g1;
1057
1058 my $x = bless [], 'Z';
1059 eval { $x->$m1() };
1060
1061 eval { &$m1() };
1062 eval { &$g1() };
1063
1064 warn $m1,$g1,"foo";
1065
1066 eval { die $m1, $g1 };
1067
1068 reset $m1;
1069 reset $g1;
1070 EXPECT
1071 Use of uninitialized value $m1 in subroutine dereference at - line 5.
1072 Use of uninitialized value $g1 in subroutine dereference at - line 6.
1073 Use of uninitialized value $m1 in splice at - line 9.
1074 Use of uninitialized value $g1 in splice at - line 9.
1075 Use of uninitialized value $m1 in splice at - line 10.
1076 Use of uninitialized value $g1 in splice at - line 10.
1077 Use of uninitialized value in addition (+) at - line 10.
1078 Use of uninitialized value $m1 in method lookup at - line 13.
1079 Use of uninitialized value in subroutine entry at - line 15.
1080 Use of uninitialized value in subroutine entry at - line 16.
1081 Use of uninitialized value $m1 in warn at - line 18.
1082 Use of uninitialized value $g1 in warn at - line 18.
1083 foo at - line 18.
1084 Use of uninitialized value $m1 in die at - line 20.
1085 Use of uninitialized value $g1 in die at - line 20.
1086 Use of uninitialized value $m1 in symbol reset at - line 22.
1087 Use of uninitialized value $g1 in symbol reset at - line 23.
1088 ########
1089 use warnings 'uninitialized';
1090 my ($m1);
1091 our ($g1);
1092
1093 open FOO;               # accesses $FOO
1094 my $foo = 'FO';
1095 open($foo."O"); # accesses $FOO
1096 open my $x;             # accesses ${*$x}
1097 open $foobar;   # accesses ${*$foobar}
1098 my $y;
1099 open $y, $m1;
1100 eval { open $y, $m1, $g1 };
1101 open $y, '<', $g1;
1102
1103 sysopen $y, $m1, $m2;
1104 sysopen $y, $m1, $g1, $m2;
1105
1106 my $old = umask;
1107 umask $m1;
1108 umask $g1;
1109 umask $old;
1110
1111 binmode STDIN, $m1;
1112 EXPECT
1113 Use of uninitialized value $FOO in open at - line 5.
1114 Use of uninitialized value in open at - line 7.
1115 Use of uninitialized value in open at - line 8.
1116 Use of uninitialized value in open at - line 9.
1117 Use of uninitialized value $m1 in open at - line 11.
1118 Use of uninitialized value $m1 in open at - line 12.
1119 Use of uninitialized value $g1 in open at - line 13.
1120 Use of uninitialized value $m2 in sysopen at - line 15.
1121 Use of uninitialized value $m1 in sysopen at - line 15.
1122 Use of uninitialized value $m2 in sysopen at - line 16.
1123 Use of uninitialized value $g1 in sysopen at - line 16.
1124 Use of uninitialized value $m1 in sysopen at - line 16.
1125 Use of uninitialized value $m1 in umask at - line 19.
1126 Use of uninitialized value $g1 in umask at - line 20.
1127 Use of uninitialized value $m1 in binmode at - line 23.
1128 ########
1129 use warnings 'uninitialized';
1130 my ($m1);
1131 our ($g1);
1132
1133 eval { my $x; tie $x, $m1 };
1134
1135 eval { my $x; read    $m1, $x, $g1 };
1136 eval { my $x; read    $m1, $x, $g1, $g2 };
1137 eval { my $x; sysread $m1, $x, $g1 };
1138 eval { my $x; sysread $m1, $x, $g1, $g2 };
1139 EXPECT
1140 Use of uninitialized value $m1 in tie at - line 5.
1141 Use of uninitialized value $m1 in ref-to-glob cast at - line 7.
1142 Use of uninitialized value $g1 in read at - line 7.
1143 Use of uninitialized value $m1 in ref-to-glob cast at - line 8.
1144 Use of uninitialized value $g1 in read at - line 8.
1145 Use of uninitialized value $g2 in read at - line 8.
1146 Use of uninitialized value $m1 in ref-to-glob cast at - line 9.
1147 Use of uninitialized value $g1 in sysread at - line 9.
1148 Use of uninitialized value $m1 in ref-to-glob cast at - line 10.
1149 Use of uninitialized value $g1 in sysread at - line 10.
1150 Use of uninitialized value $g2 in sysread at - line 10.
1151 ########
1152 use warnings 'uninitialized';
1153 my ($m1);
1154 our ($g1, @ga);
1155
1156 printf $m1;
1157 printf STDERR "%d%d%d%d\n", $m1, $m2, $g1, $g2;
1158 printf $ga[1000];
1159 printf STDERR "FOO1:%s\n", $ga[1000];
1160 printf STDERR "FOO2:%s%s%s%s\n", $m1, $g1, $ga[1],$m2;
1161 printf STDERR "FOO3:%s%s%s\n", "X", $ga[1],"Y";
1162 EXPECT
1163 Use of uninitialized value $m1 in printf at - line 5.
1164 Use of uninitialized value $m1 in printf at - line 6.
1165 Use of uninitialized value $m2 in printf at - line 6.
1166 Use of uninitialized value $g1 in printf at - line 6.
1167 Use of uninitialized value $g2 in printf at - line 6.
1168 0000
1169 Use of uninitialized value in printf at - line 7.
1170 Use of uninitialized value in printf at - line 8.
1171 FOO1:
1172 Use of uninitialized value $m1 in printf at - line 9.
1173 Use of uninitialized value $g1 in printf at - line 9.
1174 Use of uninitialized value in printf at - line 9.
1175 Use of uninitialized value $m2 in printf at - line 9.
1176 FOO2:
1177 Use of uninitialized value in printf at - line 10.
1178 FOO3:XY
1179 ########
1180 use warnings 'uninitialized';
1181 my ($m1);
1182 our ($g1);
1183
1184 eval { my $x; seek    $x,$m1, $g1 };
1185 eval { my $x; sysseek $x,$m1, $g1 };
1186 eval { syswrite $m1, $g1 }; # logic changed - now won't try $g1 if $m1 is bad
1187 # eval { syswrite STDERR, $m1 };        # XXX under utf8, can give
1188 # eval { syswrite STDERR, $m1, $g1 };   # XXX different warnings
1189 # eval { syswrite STDERR, $m1, $g1, $m2 };
1190 eval { my $x; socket $x, $m1, $g1, $m2 };
1191 eval { my ($x,$y); socketpair $x, $y, $m1, $g1, $m2 };
1192 EXPECT
1193 Use of uninitialized value $x in ref-to-glob cast at - line 5.
1194 Use of uninitialized value $g1 in seek at - line 5.
1195 Use of uninitialized value $m1 in seek at - line 5.
1196 Use of uninitialized value $x in ref-to-glob cast at - line 6.
1197 Use of uninitialized value $g1 in sysseek at - line 6.
1198 Use of uninitialized value $m1 in sysseek at - line 6.
1199 Use of uninitialized value $m1 in ref-to-glob cast at - line 7.
1200 Use of uninitialized value $m2 in socket at - line 11.
1201 Use of uninitialized value $g1 in socket at - line 11.
1202 Use of uninitialized value $m1 in socket at - line 11.
1203 Use of uninitialized value $m2 in socketpair at - line 12.
1204 Use of uninitialized value $g1 in socketpair at - line 12.
1205 Use of uninitialized value $m1 in socketpair at - line 12.
1206 ########
1207 use Config; 
1208 BEGIN { 
1209   if ( !$Config{d_flock} &&
1210        !$Config{d_fcntl_can_lock} &&
1211        !$Config{d_lockf} ) {
1212     print <<EOM ;
1213 SKIPPED
1214 # flock not present
1215 EOM
1216     exit ;
1217   } 
1218 }
1219 use warnings 'uninitialized';
1220 our ($g1);
1221
1222 eval { my $x; flock $x, $g1 };
1223 EXPECT
1224 Use of uninitialized value $x in ref-to-glob cast at - line 16.
1225 Use of uninitialized value $g1 in flock at - line 16.
1226 ########
1227 use warnings 'uninitialized';
1228 my ($m1, $v);
1229 our ($g1);
1230
1231 stat;
1232 lstat;
1233 stat $m1;
1234 lstat $g1;
1235
1236 $v = -R $m1;
1237 $v = -W $m1;
1238 $v = -X $m1;
1239 $v = -r $m1;
1240 $v = -w $m1;
1241 $v = -x $m1;
1242 $v = -e $m1;
1243 $v = -o $m1;
1244 $v = -O $m1;
1245 $v = -z $m1;
1246 $v = -s $m1;
1247 $v = -M $m1;
1248 $v = -A $m1;
1249 $v = -C $m1;
1250 $v = -S $m1;
1251 $v = -c $m1;
1252 $v = -b $m1;
1253 $v = -f $m1;
1254 $v = -d $m1;
1255 $v = -p $m1;
1256 $v = -l $m1;
1257 $v = -u $m1;
1258 $v = -g $m1;
1259 # $v = -k $m1; # XXX this is a no-op under win32
1260 $v = -t $m1;
1261 $v = -T $m1;
1262 $v = -B $m1;
1263 EXPECT
1264 Use of uninitialized value $_ in stat at - line 5.
1265 Use of uninitialized value $_ in lstat at - line 6.
1266 Use of uninitialized value $m1 in stat at - line 7.
1267 Use of uninitialized value $g1 in lstat at - line 8.
1268 Use of uninitialized value $m1 in -R at - line 10.
1269 Use of uninitialized value $m1 in -W at - line 11.
1270 Use of uninitialized value $m1 in -X at - line 12.
1271 Use of uninitialized value $m1 in -r at - line 13.
1272 Use of uninitialized value $m1 in -w at - line 14.
1273 Use of uninitialized value $m1 in -x at - line 15.
1274 Use of uninitialized value $m1 in -e at - line 16.
1275 Use of uninitialized value $m1 in -o at - line 17.
1276 Use of uninitialized value $m1 in -O at - line 18.
1277 Use of uninitialized value $m1 in -z at - line 19.
1278 Use of uninitialized value $m1 in -s at - line 20.
1279 Use of uninitialized value $m1 in -M at - line 21.
1280 Use of uninitialized value $m1 in -A at - line 22.
1281 Use of uninitialized value $m1 in -C at - line 23.
1282 Use of uninitialized value $m1 in -S at - line 24.
1283 Use of uninitialized value $m1 in -c at - line 25.
1284 Use of uninitialized value $m1 in -b at - line 26.
1285 Use of uninitialized value $m1 in -f at - line 27.
1286 Use of uninitialized value $m1 in -d at - line 28.
1287 Use of uninitialized value $m1 in -p at - line 29.
1288 Use of uninitialized value $m1 in -l at - line 30.
1289 Use of uninitialized value $m1 in -u at - line 31.
1290 Use of uninitialized value $m1 in -g at - line 32.
1291 Use of uninitialized value $m1 in -t at - line 34.
1292 Use of uninitialized value $m1 in -T at - line 35.
1293 Use of uninitialized value $m1 in -B at - line 36.
1294 ########
1295 use warnings 'uninitialized';
1296 my ($m1, $v);
1297 our ($g1);
1298
1299 $v = localtime $m1;
1300 $v = gmtime $g1;
1301 EXPECT
1302 Use of uninitialized value $m1 in localtime at - line 5.
1303 Use of uninitialized value $g1 in gmtime at - line 6.
1304 ########
1305 use warnings 'uninitialized';
1306 my ($m1, $m2, $v);
1307
1308 $v = eval;
1309 $v = eval $m1;
1310 $m2 = q($m1); $v = 1 + eval $m2;
1311 EXPECT
1312 Use of uninitialized value $_ in eval "string" at - line 4.
1313 Use of uninitialized value $m1 in eval "string" at - line 5.
1314 Use of uninitialized value in addition (+) at - line 6.
1315 ########
1316 use warnings 'uninitialized';
1317 my ($m1);
1318
1319 exit $m1;
1320 EXPECT
1321 Use of uninitialized value $m1 in exit at - line 4.
1322 ########
1323 use warnings 'uninitialized';
1324 my $undef;
1325
1326 if ($undef == 3) {
1327 } elsif ($undef == 0) {
1328 }
1329 EXPECT
1330 Use of uninitialized value $undef in numeric eq (==) at - line 4.
1331 Use of uninitialized value $undef in numeric eq (==) at - line 5.
1332 ########
1333 # TODO long standing bug - conditions of while loops
1334 use warnings;
1335
1336 my $c;
1337 my $d = 1;
1338 while ($c == 0 && $d) {
1339   # a
1340   # few
1341   # blank
1342   # lines
1343   undef $d;
1344 }
1345 EXPECT
1346 Use of uninitialized value $c in numeric eq (==) at - line 5.
1347 Use of uninitialized value $c in numeric eq (==) at - line 5.
1348 ########
1349 # TODO long standing bug - conditions of until loops
1350 use warnings;
1351
1352 my $c;
1353 my $d;
1354 until ($c == 1) {
1355   # a
1356   # few
1357   # blank
1358   # lines
1359   $c = 1 if ++$d == 2;
1360 }
1361 EXPECT
1362 Use of uninitialized value $c in numeric eq (==) at - line 5.
1363 Use of uninitialized value $c in numeric eq (==) at - line 5.
1364 ########
1365 # TODO long standing bug - conditions of for loops
1366 use warnings;
1367
1368 my $c;
1369 my $d;
1370 for ($d = 1; $c == 0 && $d; ) {
1371   # a
1372   # few
1373   # blank
1374   # lines
1375   undef $d;
1376 }
1377
1378 my $e;
1379 for ($d = 2; $d > 0; $e = !($c == 0)) {
1380   # a
1381   # few
1382   # blank
1383   # lines
1384   --$d;
1385 }
1386 EXPECT
1387 Use of uninitialized value $c in numeric eq (==) at - line 5.
1388 Use of uninitialized value $c in numeric eq (==) at - line 5.
1389 Use of uninitialized value $c in numeric eq (==) at - line 14.
1390 Use of uninitialized value $c in numeric eq (==) at - line 14.
1391 ########
1392 # TODO long standing bug - more general variant of the above problem
1393 use warnings;
1394 my $undef;
1395
1396 my $a = $undef + 1;
1397 my $b
1398   = $undef
1399   + 1;
1400 EXPECT
1401 Use of uninitialized value $undef in addition (+) at - line 4.
1402 Use of uninitialized value $undef in addition (+) at - line 7.
1403 ########
1404 use warnings 'uninitialized';
1405 my ($r1, $r2);
1406 $_ = undef;
1407 $v = reverse;
1408 $v = reverse $r1;
1409 $v = reverse "abc", $r2, "def";
1410 EXPECT
1411 Use of uninitialized value in reverse at - line 4.
1412 Use of uninitialized value $r1 in reverse at - line 5.
1413 Use of uninitialized value $r2 in reverse at - line 6.
1414 ########
1415 use warnings 'uninitialized';
1416 #
1417 # ops that can return undef for defined args
1418 # split into separate tests to diagnose the cause of daily build smoke
1419 #
1420 # *** `` not tested: Windows produces an error on STDERR
1421 # *** ditto qx()
1422 # *** pipe() not tested
1423 # *** ioctl not tested
1424 # *** socket not tested
1425 # *** socketpair not tested
1426 # *** bind not tested
1427 # *** connect not tested
1428 # *** listen not tested
1429 # *** shutdown not tested
1430 # *** setsockopt not tested
1431 # *** getpeername not tested
1432 # *** readdir not tested
1433 # *** telldir not tested
1434 # *** seekdir not tested
1435 # *** rewinddir not tested
1436 # *** closedir not tested
1437 # *** gmtime not tested
1438 # *** alarm not tested
1439 # *** semget not tested
1440 # *** getlogin not tested
1441 EXPECT
1442 ########
1443 use warnings 'uninitialized';
1444 if ($^O eq 'MSWin32') {
1445     print <<'EOM';
1446 SKIPPED
1447 # `` produces an error on STDERR on Win32
1448 EOM
1449     exit;
1450
1451 my $nocmd  = '/no/such/command';
1452 my $v;
1453 $v = 1 + `$nocmd`;
1454 EXPECT
1455 Use of uninitialized value in addition (+) at - line 11.
1456 ########
1457 use warnings 'uninitialized';
1458 if ($^O eq 'MSWin32') {
1459     print <<'EOM';
1460 SKIPPED
1461 # qx produces an error on STDERR on Win32
1462 EOM
1463     exit;
1464
1465 my $nocmd  = '/no/such/command';
1466 my $v;
1467 $v = 1 + qx($nocmd);
1468 EXPECT
1469 Use of uninitialized value in addition (+) at - line 11.
1470 ########
1471 use warnings 'uninitialized';
1472 my $nan = "NaN";
1473 if ($nan == $nan) {
1474     print <<'EOM';
1475 SKIPPED
1476 # NaN not supported here.
1477 EOM
1478     exit;
1479
1480 my $v;
1481 $v = 1 + ($nan <=> 1);
1482 EXPECT
1483 Use of uninitialized value in addition (+) at - line 11.
1484 ########
1485 use warnings 'uninitialized';
1486 if ($^O eq 'MSWin32') {
1487     print <<'EOM';
1488 SKIPPED
1489 # -k produces no warning on Win32
1490 EOM
1491     exit;
1492
1493 my $nofile = '/no/such/file';
1494 my $v;
1495 $v = 1 + -k $nofile;
1496 EXPECT
1497 Use of uninitialized value in addition (+) at - line 11.
1498 ########
1499 use warnings 'uninitialized';
1500 my $nofile = '/no/such/file';
1501 my $v;
1502 my $f = "";
1503 $v = 1 + open($f, $nofile);
1504 EXPECT
1505 Use of uninitialized value in addition (+) at - line 5.
1506 ########
1507 use warnings 'uninitialized';
1508 my $nofile = '/no/such/file';
1509 my $v;
1510 $v = 1 + fileno($nofile);
1511 EXPECT
1512 Use of uninitialized value in addition (+) at - line 4.
1513 ########
1514 use warnings 'uninitialized';
1515 my $nofile = '/no/such/file';
1516 my $v;
1517 $v = 1 + binmode($nofile);
1518 EXPECT
1519 Use of uninitialized value in addition (+) at - line 4.
1520 ########
1521 use warnings 'uninitialized';
1522 my $nofile = '/no/such/file';
1523 my $v;
1524 $v = 1 + tied($nofile);
1525 EXPECT
1526 Use of uninitialized value in addition (+) at - line 4.
1527 ########
1528 use warnings 'uninitialized';
1529 my $nofile = '/no/such/file';
1530 my $v;
1531 $v = 1 + getc($nofile);
1532 EXPECT
1533 Use of uninitialized value in addition (+) at - line 4.
1534 ########
1535 use warnings 'uninitialized';
1536 my $nofile = '/no/such/file';
1537 my $v;
1538 $v = 1 + sysread($nofile, my $buf,1);
1539 EXPECT
1540 Use of uninitialized value in addition (+) at - line 4.
1541 ########
1542 use warnings 'uninitialized';
1543 my $nofile = '/no/such/file';
1544 my $v;
1545 $v = 1 + eval { send($nofile, $buf,0) };
1546 EXPECT
1547 Use of uninitialized value in addition (+) at - line 4.
1548 ########
1549 use warnings 'uninitialized';
1550 my $nofile = '/no/such/file';
1551 my $v;
1552 my $fh = "";
1553 $v = 1 + eval { accept($fh, $nofile) };
1554 EXPECT
1555 Use of uninitialized value in addition (+) at - line 5.
1556 ########
1557 use warnings 'uninitialized';
1558 my $nofile = '/no/such/file';
1559 my $v;
1560 $v = 1 + (-r $nofile);
1561 EXPECT
1562 Use of uninitialized value in addition (+) at - line 4.
1563 ########
1564 use warnings 'uninitialized';
1565 my $nofile = '/no/such/file';
1566 my $v;
1567 $v = 1 + (-w $nofile);
1568 EXPECT
1569 Use of uninitialized value in addition (+) at - line 4.
1570 ########
1571 use warnings 'uninitialized';
1572 my $nofile = '/no/such/file';
1573 my $v;
1574 $v = 1 + (-x $nofile);
1575 EXPECT
1576 Use of uninitialized value in addition (+) at - line 4.
1577 ########
1578 use warnings 'uninitialized';
1579 my $nofile = '/no/such/file';
1580 my $v;
1581 $v = 1 + (-o $nofile);
1582 EXPECT
1583 Use of uninitialized value in addition (+) at - line 4.
1584 ########
1585 use warnings 'uninitialized';
1586 my $nofile = '/no/such/file';
1587 my $v;
1588 $v = 1 + (-R $nofile);
1589 EXPECT
1590 Use of uninitialized value in addition (+) at - line 4.
1591 ########
1592 use warnings 'uninitialized';
1593 my $nofile = '/no/such/file';
1594 my $v;
1595 $v = 1 + (-W $nofile);
1596 EXPECT
1597 Use of uninitialized value in addition (+) at - line 4.
1598 ########
1599 use warnings 'uninitialized';
1600 my $nofile = '/no/such/file';
1601 my $v;
1602 $v = 1 + (-X $nofile);
1603 EXPECT
1604 Use of uninitialized value in addition (+) at - line 4.
1605 ########
1606 use warnings 'uninitialized';
1607 my $nofile = '/no/such/file';
1608 my $v;
1609 $v = 1 + (-O $nofile);
1610 EXPECT
1611 Use of uninitialized value in addition (+) at - line 4.
1612 ########
1613 use warnings 'uninitialized';
1614 my $nofile = '/no/such/file';
1615 my $v;
1616 $v = 1 + (-e $nofile);
1617 EXPECT
1618 Use of uninitialized value in addition (+) at - line 4.
1619 ########
1620 use warnings 'uninitialized';
1621 my $nofile = '/no/such/file';
1622 my $v;
1623 $v = 1 + (-z $nofile);
1624 EXPECT
1625 Use of uninitialized value in addition (+) at - line 4.
1626 ########
1627 use warnings 'uninitialized';
1628 my $nofile = '/no/such/file';
1629 my $v;
1630 $v = 1 + (-s $nofile);
1631 EXPECT
1632 Use of uninitialized value in addition (+) at - line 4.
1633 ########
1634 use warnings 'uninitialized';
1635 my $nofile = '/no/such/file';
1636 my $v;
1637 $v = 1 + (-f $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 + (-d $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 + (-l $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 + (-p $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 + (-S $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 + (-b $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 + (-c $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 + (-t $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 + (-u $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 + (-g $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 + (-T $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 + (-B $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 + (-M $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 + (-A $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 + (-C $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 + eval { readlink $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 + opendir($f, $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 + undef;
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 my $x = 1; $v = 1 + undef($x);
1764 EXPECT
1765 Use of uninitialized value in addition (+) at - line 4.
1766 ########
1767 use warnings 'uninitialized';
1768 my $v;
1769 my $emptys = "";
1770 $v = 1 + substr($emptys,2,1);
1771 EXPECT
1772 Use of uninitialized value in addition (+) at - line 4.
1773 ########
1774 use warnings 'uninitialized';
1775 my $v;
1776 my @emptya;
1777 $v = 1 + each @emptya;
1778 EXPECT
1779 Use of uninitialized value in addition (+) at - line 4.
1780 ########
1781 use warnings 'uninitialized';
1782 my $v;
1783 my %emptyh;
1784 $v = 1 + each %emptyh;
1785 EXPECT
1786 Use of uninitialized value in addition (+) at - line 4.
1787 ########
1788 use warnings 'uninitialized';
1789 my $v;
1790 my @emptya;
1791 $v = 1 + sort @emptya;
1792 EXPECT
1793 Use of uninitialized value in addition (+) at - line 4.
1794 ########
1795 use warnings 'uninitialized';
1796 my $v;
1797 my $zero = 0; $v = 1 + caller($zero);
1798 EXPECT
1799 Use of uninitialized value in addition (+) at - line 3.
1800 ########
1801 use warnings 'uninitialized';
1802 my $nofile = '/no/such/file';
1803 my $v;
1804 $v = 1 + do $nofile;
1805 EXPECT
1806 Use of uninitialized value in addition (+) at - line 4.
1807 ########
1808 use warnings 'uninitialized';
1809 my $v;
1810 my $fn = sub {};
1811 $v = 1 + prototype $fn;
1812 EXPECT
1813 Use of uninitialized value in addition (+) at - line 4.
1814 ########
1815 use warnings 'uninitialized';
1816 my $v;
1817 my $fn = sub {};
1818 $v = 1 + (1 ~~ $fn);
1819 EXPECT
1820 Use of uninitialized value in addition (+) at - line 4.
1821 ########
1822 use warnings 'uninitialized';
1823 my $v;
1824 my $f = "";
1825 $v = 1 + (print STDIN $f); # print to STDIN returns undef
1826 EXPECT
1827 Use of uninitialized value in addition (+) at - line 4.
1828 ########
1829 use warnings 'uninitialized';
1830 my $v;
1831 my $f = "";
1832 $v = 1 + (printf STDIN "%s", $f);
1833 EXPECT
1834 Use of uninitialized value in addition (+) at - line 4.
1835 ########
1836 use warnings 'uninitialized';
1837 my $v;
1838 my $f = "";
1839 { use feature 'say'; $v = 1 + (say STDIN "%s", $f); }
1840 EXPECT
1841 Use of uninitialized value in addition (+) at - line 4.
1842 ########
1843 use warnings 'uninitialized';
1844 my $v;
1845 my $f = "";
1846 $v = 1 + (unpack("",$f));
1847 EXPECT
1848 Use of uninitialized value in addition (+) at - line 4.
1849 ########
1850 use warnings 'uninitialized';
1851 my $nofile = '/no/such/file';
1852 my $v;
1853 my $f = "";
1854 $v = 1 + sysopen($f, $nofile, 0);
1855 EXPECT
1856 Use of uninitialized value in addition (+) at - line 5.
1857 ########
1858 use warnings 'uninitialized';
1859 my $v;
1860 { my $x = -1; $v = 1 + sysseek(STDIN, $x, 0); }
1861 EXPECT
1862 Use of uninitialized value in addition (+) at - line 3.