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