This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
ununit pos value warning identified the wrong variable name
[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 $ga[1000] in print at - line 5.
286 Use of uninitialized value $ga[1000] 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 $ga[1] 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 $s4 in chomp at - line 5.
384 Use of uninitialized value $s3 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 $y in chomp at - line 8.
400 Use of uninitialized value ${$/} 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, $v);
450 our ($g1);
451
452 my ($x1,$x2);
453 $v = $x1 << $m1;
454 $v = $x2 << $g1;
455 EXPECT
456 Use of uninitialized value $m1 in left bitshift (<<) at - line 6.
457 Use of uninitialized value $x1 in left bitshift (<<) at - line 6.
458 Use of uninitialized value $g1 in left bitshift (<<) at - line 7.
459 Use of uninitialized value $x2 in left bitshift (<<) at - line 7.
460 ########
461 use warnings 'uninitialized';
462 my ($m1, $m2, $v);
463 our ($g1, $g2);
464
465 use integer;
466 $v = $m1 + $g1;
467 $v = $m1 - $g1;
468 $v = $m1 * $g1;
469 eval {$v = $m1 / $g1};
470 $v = $m2 / 2;
471 eval {$v = $m1 % $g1};
472 $v = $m2 % 2;
473 $v = $m1 < $g1;
474 $v = $m1 > $g1;
475 $v = $m1 <= $g1;
476 $v = $m1 >= $g1;
477 $v = $m1 == $g1;
478 $v = $m1 != $g1;
479 $v = $m1 <=> $g1;
480 $v = -$m1;
481 EXPECT
482 Use of uninitialized value $g1 in integer addition (+) at - line 6.
483 Use of uninitialized value $m1 in integer addition (+) at - line 6.
484 Use of uninitialized value $g1 in integer subtraction (-) at - line 7.
485 Use of uninitialized value $m1 in integer subtraction (-) at - line 7.
486 Use of uninitialized value $g1 in integer multiplication (*) at - line 8.
487 Use of uninitialized value $m1 in integer multiplication (*) at - line 8.
488 Use of uninitialized value $g1 in integer division (/) at - line 9.
489 Use of uninitialized value $m2 in integer division (/) at - line 10.
490 Use of uninitialized value $g1 in integer modulus (%) at - line 11.
491 Use of uninitialized value $m1 in integer modulus (%) at - line 11.
492 Use of uninitialized value $m2 in integer modulus (%) at - line 12.
493 Use of uninitialized value $g1 in integer lt (<) at - line 13.
494 Use of uninitialized value $m1 in integer lt (<) at - line 13.
495 Use of uninitialized value $g1 in integer gt (>) at - line 14.
496 Use of uninitialized value $m1 in integer gt (>) at - line 14.
497 Use of uninitialized value $g1 in integer le (<=) at - line 15.
498 Use of uninitialized value $m1 in integer le (<=) at - line 15.
499 Use of uninitialized value $g1 in integer ge (>=) at - line 16.
500 Use of uninitialized value $m1 in integer ge (>=) at - line 16.
501 Use of uninitialized value $g1 in integer eq (==) at - line 17.
502 Use of uninitialized value $m1 in integer eq (==) at - line 17.
503 Use of uninitialized value $g1 in integer ne (!=) at - line 18.
504 Use of uninitialized value $m1 in integer ne (!=) at - line 18.
505 Use of uninitialized value $g1 in integer comparison (<=>) at - line 19.
506 Use of uninitialized value $m1 in integer comparison (<=>) at - line 19.
507 Use of uninitialized value $m1 in integer negation (-) at - line 20.
508 ########
509 use warnings 'uninitialized';
510 my ($m1, $m2, $v);
511 our ($g1, $g2);
512
513 $v = int($g1);
514 $v = abs($g2);
515 EXPECT
516 Use of uninitialized value $g1 in int at - line 5.
517 Use of uninitialized value $g2 in abs at - line 6.
518 ########
519 use warnings 'uninitialized';
520 my ($m1, $m2, $v);
521 our ($g1);
522
523 $v = pack $m1;
524 $v = pack "i*", $m2, $g1, $g2;
525 my @unpack = unpack $m1, $m2;
526 EXPECT
527 Use of uninitialized value $m1 in pack at - line 5.
528 Use of uninitialized value $m2 in pack at - line 6.
529 Use of uninitialized value $g1 in pack at - line 6.
530 Use of uninitialized value $g2 in pack at - line 6.
531 Use of uninitialized value $m1 in unpack at - line 7.
532 Use of uninitialized value $m2 in unpack at - line 7.
533 ########
534 use warnings 'uninitialized';
535 my ($m1);
536 our ($g1);
537
538 my @sort;
539 @sort = sort $m1, $g1;
540 @sort = sort {$a <=> $b} $m1, $g1;
541 sub sortf {$a-1 <=> $b-1};
542 @sort = sort  &sortf, $m1, $g1;
543 EXPECT
544 Use of uninitialized value $m1 in sort at - line 6.
545 Use of uninitialized value $g1 in sort at - line 6.
546 Use of uninitialized value $m1 in sort at - line 6.
547 Use of uninitialized value $g1 in sort at - line 6.
548 Use of uninitialized value $m1 in sort at - line 7.
549 Use of uninitialized value $g1 in sort at - line 7.
550 Use of uninitialized value $m1 in sort at - line 7.
551 Use of uninitialized value $g1 in sort at - line 7.
552 Use of uninitialized value $a in subtraction (-) at - line 8.
553 Use of uninitialized value $b in subtraction (-) at - line 8.
554 Use of uninitialized value $m1 in sort at - line 9.
555 Use of uninitialized value $g1 in sort at - line 9.
556 Use of uninitialized value $m1 in sort at - line 9.
557 Use of uninitialized value $m1 in sort at - line 9.
558 Use of uninitialized value $g1 in sort at - line 9.
559 Use of uninitialized value $g1 in sort at - line 9.
560 ########
561 use warnings 'uninitialized';
562 my ($m1, $m2, $v);
563 our ($g1);
564
565 eval { $v = $m1 / $g1 };
566 $v = $m2 / 2;
567 eval { $v = $m1 % $g1 };
568 $v = $m2 % 2;
569 $v = $m1 == $g1;
570 $v = $m1 >= $g1;
571 $v = $m1 >  $g1;
572 $v = $m1 <= $g1;
573 $v = $m1 <  $g1;
574 $v = $m1 *  $g1;
575 $v = $m1 <=>$g1;
576 $v = $m1 != $g1;
577 $v = $m1   -$g1;
578 $v = $m1 ** $g1;
579 $v = $m1 +  $g1;
580 $v = $m1 -  $g1;
581 EXPECT
582 Use of uninitialized value $g1 in division (/) at - line 5.
583 Use of uninitialized value $m1 in division (/) at - line 5.
584 Use of uninitialized value $m2 in division (/) at - line 6.
585 Use of uninitialized value $g1 in modulus (%) at - line 7.
586 Use of uninitialized value $m1 in modulus (%) at - line 7.
587 Use of uninitialized value $m2 in modulus (%) at - line 8.
588 Use of uninitialized value $g1 in numeric eq (==) at - line 9.
589 Use of uninitialized value $m1 in numeric eq (==) at - line 9.
590 Use of uninitialized value $g1 in numeric ge (>=) at - line 10.
591 Use of uninitialized value $m1 in numeric ge (>=) at - line 10.
592 Use of uninitialized value $g1 in numeric gt (>) at - line 11.
593 Use of uninitialized value $m1 in numeric gt (>) at - line 11.
594 Use of uninitialized value $g1 in numeric le (<=) at - line 12.
595 Use of uninitialized value $m1 in numeric le (<=) at - line 12.
596 Use of uninitialized value $g1 in numeric lt (<) at - line 13.
597 Use of uninitialized value $m1 in numeric lt (<) at - line 13.
598 Use of uninitialized value $g1 in multiplication (*) at - line 14.
599 Use of uninitialized value $m1 in multiplication (*) at - line 14.
600 Use of uninitialized value $g1 in numeric comparison (<=>) at - line 15.
601 Use of uninitialized value $m1 in numeric comparison (<=>) at - line 15.
602 Use of uninitialized value $g1 in numeric ne (!=) at - line 16.
603 Use of uninitialized value $m1 in numeric ne (!=) at - line 16.
604 Use of uninitialized value $g1 in subtraction (-) at - line 17.
605 Use of uninitialized value $m1 in subtraction (-) at - line 17.
606 Use of uninitialized value $g1 in exponentiation (**) at - line 18.
607 Use of uninitialized value $m1 in exponentiation (**) at - line 18.
608 Use of uninitialized value $g1 in addition (+) at - line 19.
609 Use of uninitialized value $m1 in addition (+) at - line 19.
610 Use of uninitialized value $g1 in subtraction (-) at - line 20.
611 Use of uninitialized value $m1 in subtraction (-) at - line 20.
612 ########
613 use warnings 'uninitialized';
614 my ($m1, $v);
615 our ($g1);
616
617 $v = *global1{$m1};
618 $v = prototype $g1;
619 $v = bless [], $g1;
620 $v = `$m1`;
621
622 $v = $m1 . $g1;
623 EXPECT
624 Use of uninitialized value $m1 in glob elem at - line 5.
625 Use of uninitialized value $g1 in subroutine prototype at - line 6.
626 Use of uninitialized value $g1 in bless at - line 7.
627 Use of uninitialized value $m1 in quoted execution (``, qx) at - line 8.
628 Use of uninitialized value $m1 in concatenation (.) or string at - line 10.
629 Use of uninitialized value $g1 in concatenation (.) or string at - line 10.
630 ########
631 use warnings 'uninitialized';
632 my ($m1);
633 our ($g1, $g2);
634
635 /y/;
636 /$m1/;
637 /$g1/;
638
639 s/y/z/;         undef $_;
640 s/$m1/z/;       undef $_;
641 s//$g1/;        undef $_;
642 s/$m1/$g1/;     undef $_;
643 tr/x/y/;        undef $_;
644
645 my $_; 
646 /y/;
647 /$m1/;
648 /$g1/;
649 s/y/z/;         undef $_;
650 s/$m1/z/;       undef $_;
651 s//$g1/;        undef $_;
652 s/$m1/$g1/;     undef $_;
653 tr/x/y/;        undef $_;
654
655 $g2 =~ /y/;
656 $g2 =~ /$m1/;
657 $g2 =~ /$g1/;
658 $g2 =~ s/y/z/;          undef $g2;
659 $g2 =~ s/$m1/z/;        undef $g2;
660 $g2 =~ s//$g1/;         undef $g2;
661 $g2 =~ s/$m1/$g1/;      undef $g2;
662 $g2 =~ tr/x/y/;         undef $g2; # XXX can't extract var name yet
663
664 my $foo = "abc";
665 $foo =~ /$m1/;
666 $foo =~ /$g1/;
667 $foo =~ s/y/z/;
668 $foo =~ s/$m1/z/;
669 $foo =~ s//$g1/;
670 $foo =~ s/$m1/$g1/;
671 $foo =~ s/./$m1/e;
672 EXPECT
673 Use of uninitialized value $_ in pattern match (m//) at - line 5.
674 Use of uninitialized value $m1 in regexp compilation at - line 6.
675 Use of uninitialized value $_ in pattern match (m//) at - line 6.
676 Use of uninitialized value $g1 in regexp compilation at - line 7.
677 Use of uninitialized value $_ in pattern match (m//) at - line 7.
678 Use of uninitialized value $_ in substitution (s///) at - line 9.
679 Use of uninitialized value $m1 in regexp compilation at - line 10.
680 Use of uninitialized value $_ in substitution (s///) at - line 10.
681 Use of uninitialized value $_ in substitution (s///) at - line 10.
682 Use of uninitialized value $_ in substitution (s///) at - line 11.
683 Use of uninitialized value $g1 in substitution (s///) at - line 11.
684 Use of uninitialized value $_ in substitution (s///) at - line 11.
685 Use of uninitialized value $g1 in substitution (s///) at - line 11.
686 Use of uninitialized value $m1 in regexp compilation at - line 12.
687 Use of uninitialized value $_ in substitution (s///) at - line 12.
688 Use of uninitialized value $_ in substitution (s///) at - line 12.
689 Use of uninitialized value $g1 in substitution iterator at - line 12.
690 Use of uninitialized value $_ in transliteration (tr///) at - line 13.
691 Use of uninitialized value $_ in pattern match (m//) at - line 16.
692 Use of uninitialized value $m1 in regexp compilation at - line 17.
693 Use of uninitialized value $_ in pattern match (m//) at - line 17.
694 Use of uninitialized value $g1 in regexp compilation at - line 18.
695 Use of uninitialized value $_ in pattern match (m//) at - line 18.
696 Use of uninitialized value $_ in substitution (s///) at - line 19.
697 Use of uninitialized value $m1 in regexp compilation at - line 20.
698 Use of uninitialized value $_ in substitution (s///) at - line 20.
699 Use of uninitialized value $_ in substitution (s///) at - line 20.
700 Use of uninitialized value $_ in substitution (s///) at - line 21.
701 Use of uninitialized value $g1 in substitution (s///) at - line 21.
702 Use of uninitialized value $_ in substitution (s///) at - line 21.
703 Use of uninitialized value $g1 in substitution (s///) at - line 21.
704 Use of uninitialized value $m1 in regexp compilation at - line 22.
705 Use of uninitialized value $_ in substitution (s///) at - line 22.
706 Use of uninitialized value $_ in substitution (s///) at - line 22.
707 Use of uninitialized value $g1 in substitution iterator at - line 22.
708 Use of uninitialized value $_ in transliteration (tr///) at - line 23.
709 Use of uninitialized value $g2 in pattern match (m//) at - line 25.
710 Use of uninitialized value $m1 in regexp compilation at - line 26.
711 Use of uninitialized value $g2 in pattern match (m//) at - line 26.
712 Use of uninitialized value $g1 in regexp compilation at - line 27.
713 Use of uninitialized value $g2 in pattern match (m//) at - line 27.
714 Use of uninitialized value $g2 in substitution (s///) at - line 28.
715 Use of uninitialized value $m1 in regexp compilation at - line 29.
716 Use of uninitialized value $g2 in substitution (s///) at - line 29.
717 Use of uninitialized value $g2 in substitution (s///) at - line 29.
718 Use of uninitialized value $g2 in substitution (s///) at - line 30.
719 Use of uninitialized value $g1 in substitution (s///) at - line 30.
720 Use of uninitialized value $g2 in substitution (s///) at - line 30.
721 Use of uninitialized value $g1 in substitution (s///) at - line 30.
722 Use of uninitialized value $m1 in regexp compilation at - line 31.
723 Use of uninitialized value $g2 in substitution (s///) at - line 31.
724 Use of uninitialized value $g2 in substitution (s///) at - line 31.
725 Use of uninitialized value $g1 in substitution iterator at - line 31.
726 Use of uninitialized value in transliteration (tr///) at - line 32.
727 Use of uninitialized value $m1 in regexp compilation at - line 35.
728 Use of uninitialized value $g1 in regexp compilation at - line 36.
729 Use of uninitialized value $m1 in regexp compilation at - line 38.
730 Use of uninitialized value $g1 in substitution (s///) at - line 39.
731 Use of uninitialized value $m1 in regexp compilation at - line 40.
732 Use of uninitialized value $g1 in substitution iterator at - line 40.
733 Use of uninitialized value $m1 in substitution iterator at - line 41.
734 ########
735 use warnings 'uninitialized';
736 my ($m1);
737
738 { my $foo = "abc"; (substr($foo,0,0)) = ($m1) }
739 EXPECT
740 Use of uninitialized value $m1 in list assignment at - line 4.
741 ########
742 use warnings 'uninitialized';
743 our ($g1);
744
745 study;
746 study $g1;
747 EXPECT
748 Use of uninitialized value $_ in study at - line 4.
749 Use of uninitialized value $g1 in study at - line 5.
750 ########
751 use warnings 'uninitialized';
752 my ($m1);
753
754 pos()=0;
755 pos($m1)=0;
756 EXPECT
757 Use of uninitialized value $_ in scalar assignment at - line 4.
758 Use of uninitialized value $m1 in scalar assignment at - line 5.
759 ########
760 use warnings 'uninitialized';
761 my ($m1);
762 our ($g1);
763
764 $v = pos($m1) + 1;
765 $v = pos($g1) + 1;
766 $m1 = 0;
767 $g1 = "";
768 $v = pos($m1) + 1;
769 $v = pos($g1) + 1;
770 EXPECT
771 Use of uninitialized value in addition (+) at - line 5.
772 Use of uninitialized value in addition (+) at - line 6.
773 Use of uninitialized value in addition (+) at - line 9.
774 Use of uninitialized value in addition (+) at - line 10.
775 ########
776 use warnings 'uninitialized';
777 my ($m1);
778
779 { my $x = "a" x $m1 }           # NB LHS of repeat does not warn
780 { my @x = ("a") x $m1 }
781 EXPECT
782 Use of uninitialized value $m1 in repeat (x) at - line 4.
783 Use of uninitialized value $m1 in repeat (x) at - line 5.
784 ########
785 use warnings 'uninitialized';
786 my ($m1, $v);
787 our ($g1);
788
789 $v = "$m1";
790
791 $v = $m1 lt $g1;
792 $v = $m1 le $g1;
793 $v = $m1 gt $g1;
794 $v = $m1 ge $g1;
795 $v = $m1 eq $g1;
796 $v = $m1 ne $g1;
797 $v = $m1 cmp $g1;
798 EXPECT
799 Use of uninitialized value $m1 in string at - line 5.
800 Use of uninitialized value $m1 in string lt at - line 7.
801 Use of uninitialized value $g1 in string lt at - line 7.
802 Use of uninitialized value $m1 in string le at - line 8.
803 Use of uninitialized value $g1 in string le at - line 8.
804 Use of uninitialized value $m1 in string gt at - line 9.
805 Use of uninitialized value $g1 in string gt at - line 9.
806 Use of uninitialized value $m1 in string ge at - line 10.
807 Use of uninitialized value $g1 in string ge at - line 10.
808 Use of uninitialized value $m1 in string eq at - line 11.
809 Use of uninitialized value $g1 in string eq at - line 11.
810 Use of uninitialized value $m1 in string ne at - line 12.
811 Use of uninitialized value $g1 in string ne at - line 12.
812 Use of uninitialized value $m1 in string comparison (cmp) at - line 13.
813 Use of uninitialized value $g1 in string comparison (cmp) at - line 13.
814 ########
815 use warnings 'uninitialized';
816 my ($m1, $v);
817 our ($g1);
818
819 $v = atan2($m1,$g1);
820 $v = sin $m1;
821 $v = cos $m1;
822 $v = rand $m1;
823 $v = srand $m1;
824 $v = exp $m1;
825 $v = eval {log $m1};
826 $v = sqrt $m1;
827 $v = hex $m1;
828 $v = oct $m1;
829 $v = length $m1;
830 $v = length;
831 EXPECT
832 Use of uninitialized value $g1 in atan2 at - line 5.
833 Use of uninitialized value $m1 in atan2 at - line 5.
834 Use of uninitialized value $m1 in sin at - line 6.
835 Use of uninitialized value $m1 in cos at - line 7.
836 Use of uninitialized value $m1 in rand at - line 8.
837 Use of uninitialized value $m1 in srand at - line 9.
838 Use of uninitialized value $m1 in exp at - line 10.
839 Use of uninitialized value $m1 in log at - line 11.
840 Use of uninitialized value $m1 in sqrt at - line 12.
841 Use of uninitialized value $m1 in hex at - line 13.
842 Use of uninitialized value $m1 in oct at - line 14.
843 Use of uninitialized value $m1 in length at - line 15.
844 Use of uninitialized value $_ in length at - line 16.
845 ########
846 use warnings 'uninitialized';
847 my ($m1, $v);
848 our ($g1);
849
850 $v = substr $m1, $g1;
851 $v = substr $m1, $g1, $m2;
852 $v = substr $m1, $g1, $m2, $g2; undef $m1;
853 substr($m1, $g1) = $g2;         undef $m1; # NB global2
854 substr($m1, $g1, $m2) = $g2;    undef $m1; # isn't identified
855
856 $v = eval {vec ($m1, $g1, $m2)};
857 eval {vec ($m1, $g1, $m2) = $g2};       undef $m1; # ditto
858
859 $v = index  $m1, $m2;
860 $v = index  $m1, $m2, $g1;
861 $v = rindex $m1, $m2;
862 $v = rindex $m1, $m2, $g1;
863 EXPECT
864 Use of uninitialized value $g1 in substr at - line 5.
865 Use of uninitialized value $m1 in substr at - line 5.
866 Use of uninitialized value $m2 in substr at - line 6.
867 Use of uninitialized value $g1 in substr at - line 6.
868 Use of uninitialized value $m1 in substr at - line 6.
869 Use of uninitialized value $g2 in substr at - line 7.
870 Use of uninitialized value $m2 in substr at - line 7.
871 Use of uninitialized value $g1 in substr at - line 7.
872 Use of uninitialized value $m1 in substr at - line 7.
873 Use of uninitialized value $m1 in substr at - line 7.
874 Use of uninitialized value $g1 in substr at - line 8.
875 Use of uninitialized value $m1 in substr at - line 8.
876 Use of uninitialized value in scalar assignment at - line 8.
877 Use of uninitialized value $m2 in substr at - line 9.
878 Use of uninitialized value $g1 in substr at - line 9.
879 Use of uninitialized value $m1 in substr at - line 9.
880 Use of uninitialized value in scalar assignment at - line 9.
881 Use of uninitialized value $m2 in vec at - line 11.
882 Use of uninitialized value $g1 in vec at - line 11.
883 Use of uninitialized value $m1 in vec at - line 11.
884 Use of uninitialized value $m2 in vec at - line 12.
885 Use of uninitialized value $g1 in vec at - line 12.
886 Use of uninitialized value $m1 in vec at - line 12.
887 Use of uninitialized value $m1 in index at - line 14.
888 Use of uninitialized value $m2 in index at - line 14.
889 Use of uninitialized value $g1 in index at - line 15.
890 Use of uninitialized value $m1 in index at - line 15.
891 Use of uninitialized value $m2 in index at - line 15.
892 Use of uninitialized value $m1 in rindex at - line 16.
893 Use of uninitialized value $m2 in rindex at - line 16.
894 Use of uninitialized value $g1 in rindex at - line 17.
895 Use of uninitialized value $m1 in rindex at - line 17.
896 Use of uninitialized value $m2 in rindex at - line 17.
897 ########
898 use warnings 'uninitialized';
899 my ($m1, $v);
900 our ($g1);
901
902 $v = sprintf $m1;
903 $v = sprintf '%d%d%d%d', $m1, $m2, $g1, $g2;
904 my $m3; eval {formline $m3 };
905 formline '@<<@<<@<<@<<', $m1, $m2, $g1, $g2;
906 EXPECT
907 Use of uninitialized value $m1 in sprintf at - line 5.
908 Use of uninitialized value $m1 in sprintf at - line 6.
909 Use of uninitialized value $m2 in sprintf at - line 6.
910 Use of uninitialized value $g1 in sprintf at - line 6.
911 Use of uninitialized value $g2 in sprintf at - line 6.
912 Use of uninitialized value $m3 in formline at - line 7.
913 Use of uninitialized value $m1 in formline at - line 8.
914 Use of uninitialized value $m2 in formline at - line 8.
915 Use of uninitialized value $g1 in formline at - line 8.
916 Use of uninitialized value $g2 in formline at - line 8.
917 ########
918 use warnings 'uninitialized';
919 my ($m1, $v);
920 our ($g1);
921
922 $v = crypt $m1, $g1;
923
924 $v = ord;
925 $v = ord $m1;
926 $v = chr;
927 $v = chr $m1;
928
929 # XXX these functions don't warn!
930 $v = ucfirst;
931 $v = ucfirst $m1;
932 $v = lcfirst;
933 $v = lcfirst $m1;
934 $v = uc;
935 $v = uc $m1;
936 $v = lc;
937 $v = lc $m1;
938
939 $v = quotemeta;
940 $v = quotemeta $m1;
941 EXPECT
942 Use of uninitialized value $m1 in crypt at - line 5.
943 Use of uninitialized value $g1 in crypt at - line 5.
944 Use of uninitialized value $_ in ord at - line 7.
945 Use of uninitialized value $m1 in ord at - line 8.
946 Use of uninitialized value $_ in chr at - line 9.
947 Use of uninitialized value $m1 in chr at - line 10.
948 Use of uninitialized value $_ in quotemeta at - line 22.
949 Use of uninitialized value $m1 in quotemeta at - line 23.
950 ########
951 use warnings 'uninitialized';
952 my ($m1, $v1, $v2, $v3, $v4);
953 our ($g1);
954
955 ($v1,$v2,$v3,$v4) = split;
956 ($v1,$v2,$v3,$v4) = split $m1;
957 ($v1,$v2,$v3,$v4) = split $m1, $m2;
958 ($v1,$v2,$v3,$v4) = split $m1, $m2, $g1;
959
960 $v1 = join $m1;
961 $v2 = join $m1, $m2;
962 $v3 = join $m1, $m2, $m3;
963 EXPECT
964 Use of uninitialized value $_ in split at - line 5.
965 Use of uninitialized value $m1 in regexp compilation at - line 6.
966 Use of uninitialized value $_ in split at - line 6.
967 Use of uninitialized value $m1 in regexp compilation at - line 7.
968 Use of uninitialized value $m2 in split at - line 7.
969 Use of uninitialized value $m1 in regexp compilation at - line 8.
970 Use of uninitialized value $g1 in split at - line 8.
971 Use of uninitialized value $m2 in split at - line 8.
972 Use of uninitialized value $m1 in join or string at - line 10.
973 Use of uninitialized value $m1 in join or string at - line 11.
974 Use of uninitialized value $m2 in join or string at - line 11.
975 Use of uninitialized value $m1 in join or string at - line 12.
976 Use of uninitialized value $m2 in join or string at - line 12.
977 Use of uninitialized value $m3 in join or string at - line 12.
978 ########
979 use warnings 'uninitialized';
980 my ($m1, $m2, @ma, $v);
981
982 our @foo1=(1,undef); chomp @foo1;
983 my  @foo2=(1,undef); chomp @foo2;
984 our @foo3=(1,undef); chop  @foo3;
985 my  @foo4=(1,undef); chop  @foo4;
986 our @foo5=(1,undef); $v = sprintf "%s%s",@foo5;
987 my  @foo6=(1,undef); $v = sprintf "%s%s",@foo6;
988 our %foo7=('foo'=>'bar','baz'=>undef); $v = sprintf "%s%s",%foo7;
989 my  %foo8=('foo'=>'bar','baz'=>undef); $v = sprintf "%s%s",%foo8;
990 our @foo9 =(1,undef); $v = sprintf "%s%s%s%s",$m1,@foo9, $ma[2];
991 my  @foo10=(1,undef); $v = sprintf "%s%s%s%s",$m2,@foo10,$ma[2];
992 our %foo11=('foo'=>'bar','baz'=>undef); $v = join '', %foo11;
993 my  %foo12=('foo'=>'bar','baz'=>undef); $v = join '', %foo12;
994 our %foo13=(1..2000,'foo'=>'bar','baz'=>undef); $v = join '', %foo13;
995 my  %foo14=(1..2000,'foo'=>'bar','baz'=>undef); $v = join '', %foo14;
996 EXPECT
997 Use of uninitialized value $foo1[1] in chomp at - line 4.
998 Use of uninitialized value $foo2[1] in chomp at - line 5.
999 Use of uninitialized value $foo3[1] in chop at - line 6.
1000 Use of uninitialized value $foo4[1] in chop at - line 7.
1001 Use of uninitialized value $foo5[1] in sprintf at - line 8.
1002 Use of uninitialized value $foo6[1] in sprintf at - line 9.
1003 Use of uninitialized value $foo7{"baz"} in sprintf at - line 10.
1004 Use of uninitialized value $foo8{"baz"} in sprintf at - line 11.
1005 Use of uninitialized value $m1 in sprintf at - line 12.
1006 Use of uninitialized value $foo9[1] in sprintf at - line 12.
1007 Use of uninitialized value in sprintf at - line 12.
1008 Use of uninitialized value $m2 in sprintf at - line 13.
1009 Use of uninitialized value $foo10[1] in sprintf at - line 13.
1010 Use of uninitialized value in sprintf at - line 13.
1011 Use of uninitialized value $foo11{"baz"} in join or string at - line 14.
1012 Use of uninitialized value $foo12{"baz"} in join or string at - line 15.
1013 Use of uninitialized value within %foo13 in join or string at - line 16.
1014 Use of uninitialized value within %foo14 in join or string at - line 17.
1015 ########
1016 use warnings 'uninitialized';
1017 my ($v);
1018
1019 undef $^A; $v = $^A + ${^FOO}; # should output '^A' not chr(1)
1020 *GLOB1 = *GLOB2;
1021 $v = $GLOB1 + 1;
1022 $v = $GLOB2 + 1;
1023 EXPECT
1024 Use of uninitialized value $^FOO in addition (+) at - line 4.
1025 Use of uninitialized value $^A in addition (+) at - line 4.
1026 Use of uninitialized value $GLOB1 in addition (+) at - line 6.
1027 Use of uninitialized value $GLOB2 in addition (+) at - line 7.
1028 ########
1029 use warnings 'uninitialized';
1030 my ($v);
1031
1032 # check hash key is sanitised
1033 my %h = ("\0011\002\r\n\t\f\"\\abcdefghijklmnopqrstuvwxyz", undef);
1034 $v = join '', %h;
1035 EXPECT
1036 Use of uninitialized value $h{"\0011\2\r\n\t\f\"\\abcdefghijklm"...} in join or string at - line 6.
1037 ########
1038 use warnings 'uninitialized';
1039 my ($m1, $v);
1040 our ($g1);
1041
1042 $v = eval { \&$m1 };
1043 $v = eval { \&$g1 };
1044
1045 my @a;
1046 @a = splice @a, $m1, $g1;
1047 $v = 1 + splice @a, $m1, $g1;
1048
1049 my $x = bless [], 'Z';
1050 eval { $x->$m1() };
1051
1052 eval { &$m1() };
1053 eval { &$g1() };
1054
1055 warn $m1,$g1,"foo";
1056
1057 eval { die $m1, $g1 };
1058
1059 reset $m1;
1060 reset $g1;
1061 EXPECT
1062 Use of uninitialized value $m1 in subroutine dereference at - line 5.
1063 Use of uninitialized value $m1 in subroutine dereference at - line 5.
1064 Use of uninitialized value $g1 in subroutine dereference at - line 6.
1065 Use of uninitialized value $g1 in subroutine dereference at - line 6.
1066 Use of uninitialized value $m1 in splice at - line 9.
1067 Use of uninitialized value $g1 in splice at - line 9.
1068 Use of uninitialized value $m1 in splice at - line 10.
1069 Use of uninitialized value $g1 in splice at - line 10.
1070 Use of uninitialized value in addition (+) at - line 10.
1071 Use of uninitialized value $m1 in method lookup at - line 13.
1072 Use of uninitialized value $m1 in subroutine entry at - line 15.
1073 Use of uninitialized value $g1 in subroutine entry at - line 16.
1074 Use of uninitialized value $m1 in warn at - line 18.
1075 Use of uninitialized value $g1 in warn at - line 18.
1076 foo at - line 18.
1077 Use of uninitialized value $m1 in die at - line 20.
1078 Use of uninitialized value $g1 in die at - line 20.
1079 Use of uninitialized value $m1 in symbol reset at - line 22.
1080 Use of uninitialized value $g1 in symbol reset at - line 23.
1081 ########
1082 use warnings 'uninitialized';
1083 my ($m1);
1084 our ($g1);
1085
1086 open FOO;               # accesses $FOO
1087 my $foo = 'FO';
1088 open($foo."O"); # accesses $FOO
1089 open my $x;             # accesses ${*$x}
1090 open $foobar;   # accesses ${*$foobar}
1091 my $y;
1092 open $y, $m1;
1093 eval { open $y, $m1, $g1 };
1094 open $y, '<', $g1;
1095
1096 sysopen $y, $m1, $m2;
1097 sysopen $y, $m1, $g1, $m2;
1098
1099 my $old = umask;
1100 umask $m1;
1101 umask $g1;
1102 umask $old;
1103
1104 binmode STDIN, $m1;
1105 EXPECT
1106 Use of uninitialized value $FOO in open at - line 5.
1107 Use of uninitialized value in open at - line 7.
1108 Use of uninitialized value in open at - line 8.
1109 Use of uninitialized value in open at - line 9.
1110 Use of uninitialized value $m1 in open at - line 11.
1111 Use of uninitialized value $m1 in open at - line 12.
1112 Use of uninitialized value $g1 in open at - line 13.
1113 Use of uninitialized value $m2 in sysopen at - line 15.
1114 Use of uninitialized value $m1 in sysopen at - line 15.
1115 Use of uninitialized value $m2 in sysopen at - line 16.
1116 Use of uninitialized value $g1 in sysopen at - line 16.
1117 Use of uninitialized value $m1 in sysopen at - line 16.
1118 Use of uninitialized value $m1 in umask at - line 19.
1119 Use of uninitialized value $g1 in umask at - line 20.
1120 Use of uninitialized value $m1 in binmode at - line 23.
1121 Use of uninitialized value $m1 in binmode at - line 23.
1122 ########
1123 use warnings 'uninitialized';
1124 my ($m1);
1125 our ($g1);
1126
1127 eval { my $x; tie $x, $m1 };
1128
1129 eval { my $x; read    $m1, $x, $g1 };
1130 eval { my $x; read    $m1, $x, $g1, $g2 };
1131 eval { my $x; sysread $m1, $x, $g1 };
1132 eval { my $x; sysread $m1, $x, $g1, $g2 };
1133 EXPECT
1134 Use of uninitialized value $m1 in tie at - line 5.
1135 Use of uninitialized value $m1 in tie at - line 5.
1136 Use of uninitialized value $m1 in ref-to-glob cast at - line 7.
1137 Use of uninitialized value $g1 in read at - line 7.
1138 Use of uninitialized value $m1 in ref-to-glob cast at - line 8.
1139 Use of uninitialized value $g1 in read at - line 8.
1140 Use of uninitialized value $g2 in read at - line 8.
1141 Use of uninitialized value $m1 in ref-to-glob cast at - line 9.
1142 Use of uninitialized value $g1 in sysread at - line 9.
1143 Use of uninitialized value $m1 in ref-to-glob cast at - line 10.
1144 Use of uninitialized value $g1 in sysread at - line 10.
1145 Use of uninitialized value $g2 in sysread at - line 10.
1146 ########
1147 use warnings 'uninitialized';
1148 my ($m1);
1149 our ($g1, @ga);
1150
1151 printf $m1;
1152 printf STDERR "%d%d%d%d\n", $m1, $m2, $g1, $g2;
1153 printf $ga[1000];
1154 printf STDERR "FOO1:%s\n", $ga[1000];
1155 printf STDERR "FOO2:%s%s%s%s\n", $m1, $g1, $ga[1],$m2;
1156 printf STDERR "FOO3:%s%s%s\n", "X", $ga[1],"Y";
1157 EXPECT
1158 Use of uninitialized value $m1 in printf at - line 5.
1159 Use of uninitialized value $m1 in printf at - line 6.
1160 Use of uninitialized value $m2 in printf at - line 6.
1161 Use of uninitialized value $g1 in printf at - line 6.
1162 Use of uninitialized value $g2 in printf at - line 6.
1163 0000
1164 Use of uninitialized value $ga[1000] in printf at - line 7.
1165 Use of uninitialized value $ga[1000] in printf at - line 8.
1166 FOO1:
1167 Use of uninitialized value $m1 in printf at - line 9.
1168 Use of uninitialized value $g1 in printf at - line 9.
1169 Use of uninitialized value in printf at - line 9.
1170 Use of uninitialized value $m2 in printf at - line 9.
1171 FOO2:
1172 Use of uninitialized value $ga[1] in printf at - line 10.
1173 FOO3:XY
1174 ########
1175 use warnings 'uninitialized';
1176 my ($m1);
1177 our ($g1);
1178
1179 eval { my $x; seek    $x,$m1, $g1 };
1180 eval { my $x; sysseek $x,$m1, $g1 };
1181 eval { syswrite $m1, $g1 }; # logic changed - now won't try $g1 if $m1 is bad
1182 # eval { syswrite STDERR, $m1 };        # XXX under utf8, can give
1183 # eval { syswrite STDERR, $m1, $g1 };   # XXX different warnings
1184 # eval { syswrite STDERR, $m1, $g1, $m2 };
1185 eval { my $x; socket $x, $m1, $g1, $m2 };
1186 eval { my ($x,$y); socketpair $x, $y, $m1, $g1, $m2 };
1187 EXPECT
1188 Use of uninitialized value $x in ref-to-glob cast at - line 5.
1189 Use of uninitialized value $g1 in seek at - line 5.
1190 Use of uninitialized value $m1 in seek at - line 5.
1191 Use of uninitialized value $x in ref-to-glob cast at - line 6.
1192 Use of uninitialized value $g1 in sysseek at - line 6.
1193 Use of uninitialized value $m1 in sysseek at - line 6.
1194 Use of uninitialized value $m1 in ref-to-glob cast at - line 7.
1195 Use of uninitialized value $m2 in socket at - line 11.
1196 Use of uninitialized value $g1 in socket at - line 11.
1197 Use of uninitialized value $m1 in socket at - line 11.
1198 Use of uninitialized value $m2 in socketpair at - line 12.
1199 Use of uninitialized value $g1 in socketpair at - line 12.
1200 Use of uninitialized value $m1 in socketpair at - line 12.
1201 ########
1202 use Config; 
1203 BEGIN { 
1204   if ( !$Config{d_flock} &&
1205        !$Config{d_fcntl_can_lock} &&
1206        !$Config{d_lockf} ) {
1207     print <<EOM ;
1208 SKIPPED
1209 # flock not present
1210 EOM
1211     exit ;
1212   } 
1213 }
1214 use warnings 'uninitialized';
1215 our ($g1);
1216
1217 eval { my $x; flock $x, $g1 };
1218 EXPECT
1219 Use of uninitialized value $x in ref-to-glob cast at - line 16.
1220 Use of uninitialized value $g1 in flock at - line 16.
1221 ########
1222 use warnings 'uninitialized';
1223 my ($m1, $v);
1224 our ($g1);
1225
1226 stat;
1227 lstat;
1228 stat $m1;
1229 lstat $g1;
1230
1231 $v = -R $m1;
1232 $v = -W $m1;
1233 $v = -X $m1;
1234 $v = -r $m1;
1235 $v = -w $m1;
1236 $v = -x $m1;
1237 $v = -e $m1;
1238 $v = -o $m1;
1239 $v = -O $m1;
1240 $v = -z $m1;
1241 $v = -s $m1;
1242 $v = -M $m1;
1243 $v = -A $m1;
1244 $v = -C $m1;
1245 $v = -S $m1;
1246 $v = -c $m1;
1247 $v = -b $m1;
1248 $v = -f $m1;
1249 $v = -d $m1;
1250 $v = -p $m1;
1251 $v = -l $m1;
1252 $v = -u $m1;
1253 $v = -g $m1;
1254 # $v = -k $m1; # XXX this is a no-op under win32
1255 $v = -t $m1;
1256 $v = -T $m1;
1257 $v = -B $m1;
1258 EXPECT
1259 Use of uninitialized value $_ in stat at - line 5.
1260 Use of uninitialized value $_ in lstat at - line 6.
1261 Use of uninitialized value $m1 in stat at - line 7.
1262 Use of uninitialized value $g1 in lstat at - line 8.
1263 Use of uninitialized value $m1 in -R at - line 10.
1264 Use of uninitialized value $m1 in -W at - line 11.
1265 Use of uninitialized value $m1 in -X at - line 12.
1266 Use of uninitialized value $m1 in -r at - line 13.
1267 Use of uninitialized value $m1 in -w at - line 14.
1268 Use of uninitialized value $m1 in -x at - line 15.
1269 Use of uninitialized value $m1 in -e at - line 16.
1270 Use of uninitialized value $m1 in -o at - line 17.
1271 Use of uninitialized value $m1 in -O at - line 18.
1272 Use of uninitialized value $m1 in -z at - line 19.
1273 Use of uninitialized value $m1 in -s at - line 20.
1274 Use of uninitialized value $m1 in -M at - line 21.
1275 Use of uninitialized value $m1 in -A at - line 22.
1276 Use of uninitialized value $m1 in -C at - line 23.
1277 Use of uninitialized value $m1 in -S at - line 24.
1278 Use of uninitialized value $m1 in -c at - line 25.
1279 Use of uninitialized value $m1 in -b at - line 26.
1280 Use of uninitialized value $m1 in -f at - line 27.
1281 Use of uninitialized value $m1 in -d at - line 28.
1282 Use of uninitialized value $m1 in -p at - line 29.
1283 Use of uninitialized value $m1 in -l at - line 30.
1284 Use of uninitialized value $m1 in -l at - line 30.
1285 Use of uninitialized value $m1 in -u at - line 31.
1286 Use of uninitialized value $m1 in -g at - line 32.
1287 Use of uninitialized value $m1 in -t at - line 34.
1288 Use of uninitialized value $m1 in -T at - line 35.
1289 Use of uninitialized value $m1 in -B at - line 36.
1290 ########
1291 use warnings 'uninitialized';
1292 my ($m1, $v);
1293 our ($g1);
1294
1295 $v = localtime $m1;
1296 $v = gmtime $g1;
1297 EXPECT
1298 Use of uninitialized value $m1 in localtime at - line 5.
1299 Use of uninitialized value $g1 in gmtime at - line 6.
1300 ########
1301 use warnings 'uninitialized';
1302 my ($m1, $v);
1303
1304 $v = eval;
1305 $v = eval $m1;
1306 EXPECT
1307 Use of uninitialized value $_ in eval "string" at - line 4.
1308 Use of uninitialized value $m1 in eval "string" at - line 5.
1309 ########
1310 use warnings 'uninitialized';
1311 my ($m1);
1312
1313 exit $m1;
1314 EXPECT
1315 Use of uninitialized value $m1 in exit at - line 4.