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