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