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