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