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