1DAPM 4/2004. 2 3Test the appearance of variable names in "Use of uninitialized value" 4warnings. 5 6The following ops aren't tested, mainly because they do IO or non-portable 7stuff: 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__ 23use warnings 'uninitialized'; 24my ($m1, $m2, $v); 25 26$v = $m1 + 10; 27$v = 22 + $m2; 28$v = $m1 + $m2; 29EXPECT 30Use of uninitialized value $m1 in addition (+) at - line 4. 31Use of uninitialized value $m2 in addition (+) at - line 5. 32Use of uninitialized value $m2 in addition (+) at - line 6. 33Use of uninitialized value $m1 in addition (+) at - line 6. 34######## 35use warnings 'uninitialized'; 36use utf8; 37use open qw( :utf8 :std ); 38 39$v = $à1 + 10; 40$v = 22 + $a2; 41$v = $à1 + $a2; 42EXPECT 43Use of uninitialized value $à1 in addition (+) at - line 5. 44Use of uninitialized value $a2 in addition (+) at - line 6. 45Use of uninitialized value $a2 in addition (+) at - line 7. 46Use of uninitialized value $à1 in addition (+) at - line 7. 47######## 48use warnings 'uninitialized'; 49my ($m1, $v); 50our ($g1, $g2); 51 52$v = $g1 + 21; 53$v = 31 + $g2; 54$v = $g1 + $g2; 55$v = $m1 + $g2; 56EXPECT 57Use of uninitialized value $g1 in addition (+) at - line 5. 58Use of uninitialized value $g2 in addition (+) at - line 6. 59Use of uninitialized value $g2 in addition (+) at - line 7. 60Use of uninitialized value $g1 in addition (+) at - line 7. 61Use of uninitialized value $g2 in addition (+) at - line 8. 62Use of uninitialized value $m1 in addition (+) at - line 8. 63######## 64use warnings 'uninitialized'; 65my ($m1, @ma, $v); 66 67$v = $ma[5] + 45; 68$v = 56 + $ma[6]; 69$v = $ma[7] + $m1; 70$v = $ma[8] + $ma[9]; 71$v = $ma[-1] + $ma[-2]; 72EXPECT 73Use of uninitialized value $ma[5] in addition (+) at - line 4. 74Use of uninitialized value $ma[6] in addition (+) at - line 5. 75Use of uninitialized value $m1 in addition (+) at - line 6. 76Use of uninitialized value in addition (+) at - line 6. 77Use of uninitialized value in addition (+) at - line 7. 78Use of uninitialized value in addition (+) at - line 7. 79Use of uninitialized value in addition (+) at - line 8. 80Use of uninitialized value in addition (+) at - line 8. 81######## 82use warnings 'uninitialized'; 83my ($v); 84my @mau = (undef) x 258; 85my %mhu = ('foo', undef, 'bar', undef); 86 87$v = $mau[5] + 23; 88$v = $mau[-5] + 45; 89$v = 56 + $mau[6]; 90$v = 78 + $mau[-6]; 91$v = $mau[7] + $mau[8]; 92$v = $mau[256] + $mau[257]; 93$v = $mau[-1] + $mau[-2]; 94$v = $mhu{foo} + $mhu{bar}; 95EXPECT 96Use of uninitialized value $mau[5] in addition (+) at - line 6. 97Use of uninitialized value $mau[-5] in addition (+) at - line 7. 98Use of uninitialized value $mau[6] in addition (+) at - line 8. 99Use of uninitialized value $mau[-6] in addition (+) at - line 9. 100Use of uninitialized value $mau[8] in addition (+) at - line 10. 101Use of uninitialized value $mau[7] in addition (+) at - line 10. 102Use of uninitialized value $mau[257] in addition (+) at - line 11. 103Use of uninitialized value $mau[256] in addition (+) at - line 11. 104Use of uninitialized value $mau[-2] in addition (+) at - line 12. 105Use of uninitialized value $mau[-1] in addition (+) at - line 12. 106Use of uninitialized value $mhu{"bar"} in addition (+) at - line 13. 107Use of uninitialized value $mhu{"foo"} in addition (+) at - line 13. 108######## 109use warnings 'uninitialized'; 110my ($v); 111our (@ga); 112 113$v = $ga[8] + 21; 114$v = $ga[-8] + 46; 115$v = 57 + $ga[9]; 116$v = 58 + $ga[-9]; 117$v = $ga[10] + $ga[11]; 118$v = $ga[-10] + $ga[-11]; 119EXPECT 120Use of uninitialized value $ga[8] in addition (+) at - line 5. 121Use of uninitialized value $ga[-8] in addition (+) at - line 6. 122Use of uninitialized value $ga[9] in addition (+) at - line 7. 123Use of uninitialized value $ga[-9] in addition (+) at - line 8. 124Use of uninitialized value in addition (+) at - line 9. 125Use of uninitialized value in addition (+) at - line 9. 126Use of uninitialized value in addition (+) at - line 10. 127Use of uninitialized value in addition (+) at - line 10. 128######## 129use warnings 'uninitialized'; 130my ($v); 131our @gau = (undef) x 258; 132our %ghu = ('foo', undef, 'bar', undef); 133 134$v = $gau[8] + 46; 135$v = $gau[-8] + 47; 136$v = 57 + $gau[9]; 137$v = 57 + $gau[-9]; 138$v = $gau[10] + $gau[11]; 139$v = $gau[256] + $gau[257]; 140$v = $gau[-1] + $gau[-2]; 141$v = $ghu{foo} + $ghu{bar}; 142EXPECT 143Use of uninitialized value $gau[8] in addition (+) at - line 6. 144Use of uninitialized value $gau[-8] in addition (+) at - line 7. 145Use of uninitialized value $gau[9] in addition (+) at - line 8. 146Use of uninitialized value $gau[-9] in addition (+) at - line 9. 147Use of uninitialized value $gau[11] in addition (+) at - line 10. 148Use of uninitialized value $gau[10] in addition (+) at - line 10. 149Use of uninitialized value $gau[257] in addition (+) at - line 11. 150Use of uninitialized value $gau[256] in addition (+) at - line 11. 151Use of uninitialized value $gau[-2] in addition (+) at - line 12. 152Use of uninitialized value $gau[-1] in addition (+) at - line 12. 153Use of uninitialized value $ghu{"bar"} in addition (+) at - line 13. 154Use of uninitialized value $ghu{"foo"} in addition (+) at - line 13. 155######## 156use warnings 'uninitialized'; 157my ($v); 158our @gau = (undef) x 258; 159our %ghu = ('foo', undef, 'bar', undef); 160my @mau = (undef) x 258; 161my %mhu = ('foo', undef, 'bar', undef); 162 163my $i1 = 10; 164my $i2 = 20; 165my $i3 = 2000; 166my $k1 = 'foo'; 167my $k2 = 'bar'; 168my $k3 = 'baz'; 169$v = $mau[$i1] + $mau[$i2]; 170$v = $gau[$i1] + $gau[$i2]; 171$v = $gau[$i1] + $gau[$i3]; 172$v = $mhu{$k1} + $mhu{$k2}; 173$v = $ghu{$k1} + $ghu{$k2}; 174$v = $ghu{$k1} + $ghu{$k3}; 175EXPECT 176Use of uninitialized value $mau[20] in addition (+) at - line 14. 177Use of uninitialized value $mau[10] in addition (+) at - line 14. 178Use of uninitialized value $gau[20] in addition (+) at - line 15. 179Use of uninitialized value $gau[10] in addition (+) at - line 15. 180Use of uninitialized value in addition (+) at - line 16. 181Use of uninitialized value $gau[10] in addition (+) at - line 16. 182Use of uninitialized value $mhu{"bar"} in addition (+) at - line 17. 183Use of uninitialized value $mhu{"foo"} in addition (+) at - line 17. 184Use of uninitialized value $ghu{"bar"} in addition (+) at - line 18. 185Use of uninitialized value $ghu{"foo"} in addition (+) at - line 18. 186Use of uninitialized value in addition (+) at - line 19. 187Use of uninitialized value $ghu{"foo"} in addition (+) at - line 19. 188######## 189use warnings 'uninitialized'; 190my ($m1, $m2, @ma, %mh, $v); 191our ($g1, $g2, @ga, %gh); 192 193$v = $ma[$m1]; 194$v = $ma[$g1]; 195$v = $ga[$m2]; 196$v = $ga[$g2]; 197 198$v = $mh{$m1}; 199$v = $mh{$g1}; 200$v = $gh{$m2}; 201$v = $gh{$g2}; 202 203$v = $m1+($m2-$g1); 204$v = $ma[$ga[3]]; 205$v = $ga[$ma[4]]; 206EXPECT 207Use of uninitialized value $m1 in array element at - line 5. 208Use of uninitialized value $g1 in array element at - line 6. 209Use of uninitialized value $m2 in array element at - line 7. 210Use of uninitialized value $g2 in array element at - line 8. 211Use of uninitialized value $m1 in hash element at - line 10. 212Use of uninitialized value $g1 in hash element at - line 11. 213Use of uninitialized value $m2 in hash element at - line 12. 214Use of uninitialized value $g2 in hash element at - line 13. 215Use of uninitialized value $g1 in subtraction (-) at - line 15. 216Use of uninitialized value $m2 in subtraction (-) at - line 15. 217Use of uninitialized value $m1 in addition (+) at - line 15. 218Use of uninitialized value $ga[3] in array element at - line 16. 219Use of uninitialized value $ma[4] in array element at - line 17. 220######## 221use warnings 'uninitialized'; 222my (@ma, %mh, $v); 223our (@ga, %gh); 224 225$v = sin $ga[1000]; 226$v = sin $ma[1000]; 227$v = sin $gh{foo}; 228$v = sin $mh{bar}; 229 230$v = sin $ga[$$]; 231$v = sin $ma[$$]; 232$v = sin $gh{$$}; 233$v = sin $mh{$$}; 234EXPECT 235Use of uninitialized value $ga[1000] in sin at - line 5. 236Use of uninitialized value $ma[1000] in sin at - line 6. 237Use of uninitialized value $gh{"foo"} in sin at - line 7. 238Use of uninitialized value $mh{"bar"} in sin at - line 8. 239Use of uninitialized value within @ga in sin at - line 10. 240Use of uninitialized value within @ma in sin at - line 11. 241Use of uninitialized value within %gh in sin at - line 12. 242Use of uninitialized value within %mh in sin at - line 13. 243######## 244use warnings 'uninitialized'; 245my (@mat, %mht, $v); 246sub X::TIEARRAY { bless [], 'X' } 247sub X::TIEHASH { bless [], 'X' } 248sub X::FETCH { undef } 249tie @mat, 'X'; 250tie %mht, 'X'; 251my $key1 = 'akey'; 252my $key2 = 'bkey'; 253my $index1 = 33; 254my $index2 = 55; 255 256$v = sin $mat[0]; 257$v = $mat[0] + $mat[1]; 258$v = sin $mat[1000]; 259$v = $mat[1000] + $mat[1001]; 260 261$v = sin $mat[$index1]; 262$v = $mat[$index1] + $mat[$index2]; 263 264$v = sin $mht{foo}; 265$v = $mht{foo} + $mht{bar}; 266 267$v = sin $mht{$key1}; 268$v = $mht{$key1} + $mht{$key2}; 269 270$v = $1+1; 271EXPECT 272Use of uninitialized value $mat[0] in sin at - line 13. 273Use of uninitialized value in addition (+) at - line 14. 274Use of uninitialized value in addition (+) at - line 14. 275Use of uninitialized value $mat[1000] in sin at - line 15. 276Use of uninitialized value in addition (+) at - line 16. 277Use of uninitialized value in addition (+) at - line 16. 278Use of uninitialized value within @mat in sin at - line 18. 279Use of uninitialized value in addition (+) at - line 19. 280Use of uninitialized value in addition (+) at - line 19. 281Use of uninitialized value $mht{"foo"} in sin at - line 21. 282Use of uninitialized value in addition (+) at - line 22. 283Use of uninitialized value in addition (+) at - line 22. 284Use of uninitialized value within %mht in sin at - line 24. 285Use of uninitialized value in addition (+) at - line 25. 286Use of uninitialized value in addition (+) at - line 25. 287Use of uninitialized value $1 in addition (+) at - line 27. 288######## 289use warnings 'uninitialized'; 290my ($m1); 291our ($g1, @ga); 292 293print $ga[1000]; 294print STDERR $ga[1000]; 295print STDERR $m1, $g1, $ga[1],$m2; 296print STDERR "", $ga[1],""; 297EXPECT 298Use of uninitialized value in print at - line 5. 299Use of uninitialized value in print at - line 6. 300Use of uninitialized value $m1 in print at - line 7. 301Use of uninitialized value $g1 in print at - line 7. 302Use of uninitialized value in print at - line 7. 303Use of uninitialized value $m2 in print at - line 7. 304Use of uninitialized value in print at - line 8. 305######## 306use warnings 'uninitialized'; 307my ($m1); 308our ($g1); 309 310close $m1; # exercises rv2gv 311close $g1; # exercises rv2gv 312close undef; # exercises rv2gv 313EXPECT 314Use of uninitialized value $m1 in ref-to-glob cast at - line 5. 315Use of uninitialized value $g1 in ref-to-glob cast at - line 6. 316Use of uninitialized value in ref-to-glob cast at - line 7. 317######## 318use warnings 'uninitialized'; 319my ($m1, $m2, $v); 320our ($g1, $g2); 321 322$v = $$m1; 323$v = $$g1; 324 325$v = @$m1; 326$v = @$g1; 327$v = %$m2; 328$v = %$g2; 329 330$v = ${"foo.bar"}+1; 331$v = ${"foo$m1"}+1; 332$v = ${"foo$g1"}+1; 333EXPECT 334Use of uninitialized value $m1 in scalar dereference at - line 5. 335Use of uninitialized value $g1 in scalar dereference at - line 6. 336Use of uninitialized value $m1 in array dereference at - line 8. 337Use of uninitialized value $g1 in array dereference at - line 9. 338Use of uninitialized value $m2 in hash dereference at - line 10. 339Use of uninitialized value $g2 in hash dereference at - line 11. 340Use of uninitialized value in addition (+) at - line 13. 341Use of uninitialized value $m1 in concatenation (.) or string at - line 14. 342Use of uninitialized value in addition (+) at - line 14. 343Use of uninitialized value $g1 in concatenation (.) or string at - line 15. 344Use of uninitialized value in addition (+) at - line 15. 345######## 346use warnings 'uninitialized'; 347my ($m1, $v); 348our ($g1); 349 350$v = $m1 | $m2; 351$v = $m1 & $m2; 352$v = $m1 ^ $m2; 353$v = ~$m1; 354 355$v = $g1 | $g2; 356$v = $g1 & $g2; 357$v = $g1 ^ $g2; 358$v = ~$g1; 359EXPECT 360Use of uninitialized value $m1 in bitwise or (|) at - line 5. 361Use of uninitialized value $m2 in bitwise or (|) at - line 5. 362Use of uninitialized value $m1 in bitwise and (&) at - line 6. 363Use of uninitialized value $m2 in bitwise and (&) at - line 6. 364Use of uninitialized value $m1 in bitwise xor (^) at - line 7. 365Use of uninitialized value $m2 in bitwise xor (^) at - line 7. 366Use of uninitialized value $m1 in 1's complement (~) at - line 8. 367Use of uninitialized value $g1 in bitwise or (|) at - line 10. 368Use of uninitialized value $g2 in bitwise or (|) at - line 10. 369Use of uninitialized value $g1 in bitwise and (&) at - line 11. 370Use of uninitialized value $g2 in bitwise and (&) at - line 11. 371Use of uninitialized value $g1 in bitwise xor (^) at - line 12. 372Use of uninitialized value $g2 in bitwise xor (^) at - line 12. 373Use of uninitialized value $g1 in 1's complement (~) at - line 13. 374######## 375use warnings 'uninitialized'; 376my ($v); 377 378my $tmp1; $v = $tmp1++; # (doesn't warn) 379our $tmp2; $v = $tmp2++; # (doesn't warn) 380my $tmp3; $v = ++$tmp1; # (doesn't warn) 381our $tmp4; $v = ++$tmp2; # (doesn't warn) 382 383my $tmp5; $v = $tmp5--; # (doesn't warn) 384our $tmp6; $v = $tmp6--; # (doesn't warn) 385my $tmp7; $v = --$tmp7; # (doesn't warn) 386our $tmp8; $v = --$tmp8; # (doesn't warn) 387EXPECT 388######## 389use warnings 'uninitialized'; 390 391my $s1; chomp $s1; 392my $s2; chop $s2; 393my ($s3,$s4); chomp ($s3,$s4); 394my ($s5,$s6); chop ($s5,$s6); 395EXPECT 396Use of uninitialized value $s1 in scalar chomp at - line 3. 397Use of uninitialized value $s2 in scalar chop at - line 4. 398Use of uninitialized value $s3 in chomp at - line 5. 399Use of uninitialized value $s4 in chomp at - line 5. 400Use of uninitialized value $s5 in chop at - line 6. 401Use of uninitialized value $s6 in chop at - line 6. 402######## 403use warnings 'uninitialized'; 404my ($m1); 405 406local $/ =\$m1; 407my $x = "abc"; 408chomp $x; chop $x; 409my $y; 410chomp ($x, $y); chop ($x, $y); 411EXPECT 412Use of uninitialized value $m1 in scalar assignment at - line 4. 413Use of uninitialized value $m1 in scalar assignment at - line 4. 414Setting $/ to a reference to zero as a form of slurp is deprecated, treating as undef at - line 4. 415Use of uninitialized value $y in chop at - line 8. 416######## 417use warnings 'uninitialized'; 418my ($m1, @ma, %mh); 419our ($g1); 420 421delete $ma[$m1]; 422delete @ma[$m1, $g1]; 423delete $mh{$m1}; 424delete @mh{$m1, $g1}; 425EXPECT 426Use of uninitialized value $m1 in delete at - line 5. 427Use of uninitialized value $m1 in delete at - line 6. 428Use of uninitialized value $g1 in delete at - line 6. 429Use of uninitialized value $m1 in delete at - line 7. 430Use of uninitialized value $m1 in delete at - line 8. 431Use of uninitialized value $g1 in delete at - line 8. 432######## 433use warnings 'uninitialized'; 434my ($m1, @ma, %mh); 435our ($g1); 436 437my @a = @ma[$m1, $g1]; 438@a = (4,5)[$m1, $g1]; 439@a = @mh{$m1, $g1}; 440EXPECT 441Use of uninitialized value $m1 in array slice at - line 5. 442Use of uninitialized value $g1 in array slice at - line 5. 443Use of uninitialized value $m1 in list slice at - line 6. 444Use of uninitialized value $g1 in list slice at - line 6. 445Use of uninitialized value $m1 in hash slice at - line 7. 446Use of uninitialized value $g1 in hash slice at - line 7. 447######## 448use warnings 'uninitialized'; 449my ($m1, @ma, %mh, $v); 450our ($g1, @ga, %gh); 451 452$v = exists $ma[$m1]; 453$v = exists $ga[$g1]; 454$v = exists $mh{$m1}; 455$v = exists $gh{$g1}; 456EXPECT 457Use of uninitialized value $m1 in exists at - line 5. 458Use of uninitialized value $g1 in exists at - line 6. 459Use of uninitialized value $m1 in exists at - line 7. 460Use of uninitialized value $g1 in exists at - line 8. 461######## 462use warnings 'uninitialized'; 463my ($m1, $m2); 464my ($v, @a); 465my ($t, $u) = (1, 1); 466 467local $.; 468 469@ma = (1 .. 2); 470@ma = ($t .. 2); 471@ma = ($m1 .. 2); 472@ma = (1 .. $u); 473@ma = (1 .. $m2); 474 475@ma = (1 ... 2); 476@ma = ($t ... 2); 477@ma = ($m1 ... 2); 478@ma = (1 ... $u); 479@ma = (1 ... $m2); 480 481$v = (1 .. 2); 482$v = ($t .. 2); 483$v = ($m1 .. 2); 484$v = (1 .. $u); 485$v = (1 .. $m2); 486 487$v = (1 ... 2); 488$v = ($t ... 2); 489$v = ($m1 ... 2); 490$v = (1 ... $u); 491$v = (1 ... $m2); 492EXPECT 493Use of uninitialized value $m1 in range (or flop) at - line 10. 494Use of uninitialized value $m2 in range (or flop) at - line 12. 495Use of uninitialized value $m1 in range (or flop) at - line 16. 496Use of uninitialized value $m2 in range (or flop) at - line 18. 497Use of uninitialized value $. in range (or flip) at - line 20. 498Use of uninitialized value $. in range (or flop) at - line 21. 499Use of uninitialized value $. in range (or flip) at - line 23. 500Use of uninitialized value $. in range (or flip) at - line 24. 501Use of uninitialized value $. in range (or flip) at - line 26. 502Use of uninitialized value $. in range (or flip) at - line 29. 503Use of uninitialized value $. in range (or flip) at - line 30. 504######## 505use warnings 'uninitialized'; 506my ($m1, $m2); 507my ($v, @a); 508my ($t, $u) = (1, 1); 509 510@ma = ($t .. $u); 511@ma = ($m1 .. $u); 512@ma = ($t .. $m2); 513@ma = ($m1 .. $m2); 514 515@ma = ($t ... $u); 516@ma = ($m1 ... $u); 517@ma = ($t ... $m2); 518@ma = ($m1 ... $m2); 519 520$v = ($t .. $u); 521$v = ($m1 .. $u); 522$v = ($t .. $m2); 523$v = ($m1 .. $m2); 524 525$v = ($t ... $u); 526$v = ($m1 ... $u); 527$v = ($t ... $m2); 528$v = ($m1 ... $m2); 529EXPECT 530Use of uninitialized value $m1 in range (or flop) at - line 7. 531Use of uninitialized value $m2 in range (or flop) at - line 8. 532Use of uninitialized value $m1 in range (or flop) at - line 9. 533Use of uninitialized value $m2 in range (or flop) at - line 9. 534Use of uninitialized value $m1 in range (or flop) at - line 12. 535Use of uninitialized value $m2 in range (or flop) at - line 13. 536Use of uninitialized value $m1 in range (or flop) at - line 14. 537Use of uninitialized value $m2 in range (or flop) at - line 14. 538######## 539use warnings 'uninitialized'; 540my ($m1, $v); 541our ($g1); 542 543my ($x1,$x2); 544$v = $x1 << $m1; 545$v = $x2 << $g1; 546EXPECT 547Use of uninitialized value $m1 in left bitshift (<<) at - line 6. 548Use of uninitialized value $x1 in left bitshift (<<) at - line 6. 549Use of uninitialized value $g1 in left bitshift (<<) at - line 7. 550Use of uninitialized value $x2 in left bitshift (<<) at - line 7. 551######## 552use warnings 'uninitialized'; 553my ($m1, $m2, $v); 554our ($g1, $g2); 555 556use integer; 557$v = $m1 + $g1; 558$v = $m1 - $g1; 559$v = $m1 * $g1; 560eval {$v = $m1 / $g1}; 561$v = $m2 / 2; 562eval {$v = $m1 % $g1}; 563$v = $m2 % 2; 564$v = $m1 < $g1; 565$v = $m1 > $g1; 566$v = $m1 <= $g1; 567$v = $m1 >= $g1; 568$v = $m1 == $g1; 569$v = $m1 != $g1; 570$v = $m1 <=> $g1; 571$v = -$m1; 572EXPECT 573Use of uninitialized value $g1 in integer addition (+) at - line 6. 574Use of uninitialized value $m1 in integer addition (+) at - line 6. 575Use of uninitialized value $g1 in integer subtraction (-) at - line 7. 576Use of uninitialized value $m1 in integer subtraction (-) at - line 7. 577Use of uninitialized value $g1 in integer multiplication (*) at - line 8. 578Use of uninitialized value $m1 in integer multiplication (*) at - line 8. 579Use of uninitialized value $g1 in integer division (/) at - line 9. 580Use of uninitialized value $m2 in integer division (/) at - line 10. 581Use of uninitialized value $g1 in integer modulus (%) at - line 11. 582Use of uninitialized value $m1 in integer modulus (%) at - line 11. 583Use of uninitialized value $m2 in integer modulus (%) at - line 12. 584Use of uninitialized value $g1 in integer lt (<) at - line 13. 585Use of uninitialized value $m1 in integer lt (<) at - line 13. 586Use of uninitialized value $g1 in integer gt (>) at - line 14. 587Use of uninitialized value $m1 in integer gt (>) at - line 14. 588Use of uninitialized value $g1 in integer le (<=) at - line 15. 589Use of uninitialized value $m1 in integer le (<=) at - line 15. 590Use of uninitialized value $g1 in integer ge (>=) at - line 16. 591Use of uninitialized value $m1 in integer ge (>=) at - line 16. 592Use of uninitialized value $g1 in integer eq (==) at - line 17. 593Use of uninitialized value $m1 in integer eq (==) at - line 17. 594Use of uninitialized value $g1 in integer ne (!=) at - line 18. 595Use of uninitialized value $m1 in integer ne (!=) at - line 18. 596Use of uninitialized value $g1 in integer comparison (<=>) at - line 19. 597Use of uninitialized value $m1 in integer comparison (<=>) at - line 19. 598Use of uninitialized value $m1 in integer negation (-) at - line 20. 599######## 600use warnings 'uninitialized'; 601my ($m1, $m2, $v); 602our ($g1, $g2); 603 604$v = int($g1); 605$v = abs($g2); 606EXPECT 607Use of uninitialized value $g1 in int at - line 5. 608Use of uninitialized value $g2 in abs at - line 6. 609######## 610use warnings 'uninitialized'; 611my ($m1, $m2, $v); 612our ($g1); 613 614$v = pack $m1; 615$v = pack "i*", $m2, $g1, $g2; 616my @unpack = unpack $m1, $m2; 617EXPECT 618Use of uninitialized value $m1 in pack at - line 5. 619Use of uninitialized value $m2 in pack at - line 6. 620Use of uninitialized value $g1 in pack at - line 6. 621Use of uninitialized value $g2 in pack at - line 6. 622Use of uninitialized value $m1 in unpack at - line 7. 623Use of uninitialized value $m2 in unpack at - line 7. 624######## 625use warnings 'uninitialized'; 626my ($m1); 627our ($g1); 628 629my @sort; 630@sort = sort $m1, $g1; 631@sort = sort {$a <=> $b} $m1, $g1; 632sub sortf {$a-1 <=> $b-1}; 633@sort = sort &sortf, $m1, $g1; 634@sort = sort { undef } 1, 2; 635sub frobnicate($$) { undef } 636@sort = sort frobnicate 1, 2; 637@sort = sort pyfg 1, 2; 638@sort = sort pyfgc 1, 2; 639no warnings; 640sub pyfg { undef } 641sub pyfgc($$) { undef } 642use warnings; 643sub dog {} 644sub dogwood($$) {} 645@sort = sort dog 1,2; 646@sort = sort dogwood 1,2; 647EXPECT 648Use of uninitialized value $m1 in sort at - line 6. 649Use of uninitialized value $g1 in sort at - line 6. 650Use of uninitialized value $m1 in sort at - line 6. 651Use of uninitialized value $g1 in sort at - line 6. 652Use of uninitialized value $m1 in sort at - line 7. 653Use of uninitialized value $g1 in sort at - line 7. 654Use of uninitialized value $m1 in sort at - line 7. 655Use of uninitialized value $g1 in sort at - line 7. 656Use of uninitialized value $a in subtraction (-) at - line 8. 657Use of uninitialized value $b in subtraction (-) at - line 8. 658Use of uninitialized value $m1 in sort at - line 9. 659Use of uninitialized value $g1 in sort at - line 9. 660Use of uninitialized value $m1 in sort at - line 9. 661Use of uninitialized value $m1 in sort at - line 9. 662Use of uninitialized value $g1 in sort at - line 9. 663Use of uninitialized value $g1 in sort at - line 9. 664Use of uninitialized value in sort at - line 10. 665Use of uninitialized value in sort at - line 12. 666Use of uninitialized value in sort at - line 13. 667Use of uninitialized value in sort at - line 14. 668Use of uninitialized value in sort at - line 21. 669Use of uninitialized value in sort at - line 22. 670######## 671my $nan = sin 9**9**9; 672if ($nan == $nan) { 673 print <<EOM ; 674SKIPPED 675# No nan support 676EOM 677 exit ; 678} 679use warnings 'uninitialized'; 680# The optimised {$a<=>$b} case should behave the same way as unoptimised. 681@sort = sort { ($a)[0] <=> $b } 1, $nan; 682@sort = sort { $a <=> $b } 1, $nan; 683EXPECT 684Use of uninitialized value in sort at - line 11. 685Use of uninitialized value in sort at - line 12. 686######## 687use warnings 'uninitialized'; 688my ($m1, $m2, $v); 689our ($g1); 690 691eval { $v = $m1 / $g1 }; 692$v = $m2 / 2; 693eval { $v = $m1 % $g1 }; 694$v = $m2 % 2; 695$v = $m1 == $g1; 696$v = $m1 >= $g1; 697$v = $m1 > $g1; 698$v = $m1 <= $g1; 699$v = $m1 < $g1; 700$v = $m1 * $g1; 701$v = $m1 <=>$g1; 702$v = $m1 != $g1; 703$v = $m1 -$g1; 704$v = $m1 ** $g1; 705$v = $m1 + $g1; 706$v = $m1 - $g1; 707EXPECT 708Use of uninitialized value $g1 in division (/) at - line 5. 709Use of uninitialized value $m1 in division (/) at - line 5. 710Use of uninitialized value $m2 in division (/) at - line 6. 711Use of uninitialized value $g1 in modulus (%) at - line 7. 712Use of uninitialized value $m1 in modulus (%) at - line 7. 713Use of uninitialized value $m2 in modulus (%) at - line 8. 714Use of uninitialized value $g1 in numeric eq (==) at - line 9. 715Use of uninitialized value $m1 in numeric eq (==) at - line 9. 716Use of uninitialized value $g1 in numeric ge (>=) at - line 10. 717Use of uninitialized value $m1 in numeric ge (>=) at - line 10. 718Use of uninitialized value $g1 in numeric gt (>) at - line 11. 719Use of uninitialized value $m1 in numeric gt (>) at - line 11. 720Use of uninitialized value $g1 in numeric le (<=) at - line 12. 721Use of uninitialized value $m1 in numeric le (<=) at - line 12. 722Use of uninitialized value $g1 in numeric lt (<) at - line 13. 723Use of uninitialized value $m1 in numeric lt (<) at - line 13. 724Use of uninitialized value $g1 in multiplication (*) at - line 14. 725Use of uninitialized value $m1 in multiplication (*) at - line 14. 726Use of uninitialized value $g1 in numeric comparison (<=>) at - line 15. 727Use of uninitialized value $m1 in numeric comparison (<=>) at - line 15. 728Use of uninitialized value $g1 in numeric ne (!=) at - line 16. 729Use of uninitialized value $m1 in numeric ne (!=) at - line 16. 730Use of uninitialized value $g1 in subtraction (-) at - line 17. 731Use of uninitialized value $m1 in subtraction (-) at - line 17. 732Use of uninitialized value $g1 in exponentiation (**) at - line 18. 733Use of uninitialized value $m1 in exponentiation (**) at - line 18. 734Use of uninitialized value $g1 in addition (+) at - line 19. 735Use of uninitialized value $m1 in addition (+) at - line 19. 736Use of uninitialized value $g1 in subtraction (-) at - line 20. 737Use of uninitialized value $m1 in subtraction (-) at - line 20. 738######## 739use warnings 'uninitialized'; 740sub TIESCALAR{bless[]} 741sub FETCH { undef } 742 743tie my $m1, ""; 744my $v; 745$v = $m1 + $m1; 746$v = $m1 - $m1; 747no warnings; 748$v = $m1 + $m1; 749$v = $m1 - $m1; 750EXPECT 751Use of uninitialized value $m1 in addition (+) at - line 7. 752Use of uninitialized value $m1 in addition (+) at - line 7. 753Use of uninitialized value $m1 in subtraction (-) at - line 8. 754Use of uninitialized value $m1 in subtraction (-) at - line 8. 755######## 756use warnings 'uninitialized'; 757my ($m1, $v); 758our ($g1); 759 760$v = *global1{$m1}; 761$v = prototype $g1; 762$v = bless [], $g1; 763$v = `$m1`; 764 765$v = $m1 . $g1; 766EXPECT 767Use of uninitialized value $m1 in glob elem at - line 5. 768Use of uninitialized value $g1 in subroutine prototype at - line 6. 769Use of uninitialized value $g1 in bless at - line 7. 770Use of uninitialized value $m1 in quoted execution (``, qx) at - line 8. 771Use of uninitialized value $m1 in concatenation (.) or string at - line 10. 772Use of uninitialized value $g1 in concatenation (.) or string at - line 10. 773######## 774use warnings 'uninitialized'; 775my ($m1); 776our ($g1, $g2); 777 778/y/; 779/$m1/; 780/$g1/; 781 782s/y/z/; undef $_; 783s/$m1/z/; undef $_; 784s//$g1/; undef $_; 785s/$m1/$g1/; undef $_; 786tr/x/y/; undef $_; 787tr/x/y/r; undef $_; 788 789$g2 =~ /y/; 790$g2 =~ /$m1/; 791$g2 =~ /$g1/; 792$g2 =~ s/y/z/; undef $g2; 793$g2 =~ s/$m1/z/; undef $g2; 794$g2 =~ s//$g1/; undef $g2; 795$g2 =~ s/$m1/$g1/; undef $g2; 796$g2 =~ tr/x/y/; undef $g2; # XXX can't extract var name yet 797$g2 =~ tr/x/y/r; undef $g2; # XXX can't extract var name yet 798 799my $foo = "abc"; 800$foo =~ /$m1/; 801$foo =~ /$g1/; 802$foo =~ s/y/z/; 803$foo =~ s/$m1/z/; 804$foo =~ s//$g1/; 805$foo =~ s/$m1/$g1/; 806$foo =~ s/./$m1/e; 807undef $g1; 808$m1 = '$g1'; 809$foo =~ s//$m1/ee; 810undef $m1; 811$m1 =~ tr/x/y/; undef $m1; 812$m1 =~ tr/x/y/r; 813EXPECT 814Use of uninitialized value $_ in pattern match (m//) at - line 5. 815Use of uninitialized value $m1 in regexp compilation at - line 6. 816Use of uninitialized value $_ in pattern match (m//) at - line 6. 817Use of uninitialized value $g1 in regexp compilation at - line 7. 818Use of uninitialized value $_ in pattern match (m//) at - line 7. 819Use of uninitialized value $_ in substitution (s///) at - line 9. 820Use of uninitialized value $m1 in regexp compilation at - line 10. 821Use of uninitialized value $_ in substitution (s///) at - line 10. 822Use of uninitialized value $_ in substitution (s///) at - line 10. 823Use of uninitialized value $_ in substitution (s///) at - line 11. 824Use of uninitialized value $_ in substitution (s///) at - line 11. 825Use of uninitialized value $g1 in substitution iterator at - line 11. 826Use of uninitialized value $m1 in regexp compilation at - line 12. 827Use of uninitialized value $_ in substitution (s///) at - line 12. 828Use of uninitialized value $_ in substitution (s///) at - line 12. 829Use of uninitialized value $g1 in substitution iterator at - line 12. 830Use of uninitialized value $_ in transliteration (tr///) at - line 13. 831Use of uninitialized value $_ in transliteration (tr///) at - line 14. 832Use of uninitialized value $g2 in pattern match (m//) at - line 16. 833Use of uninitialized value $m1 in regexp compilation at - line 17. 834Use of uninitialized value $g2 in pattern match (m//) at - line 17. 835Use of uninitialized value $g1 in regexp compilation at - line 18. 836Use of uninitialized value $g2 in pattern match (m//) at - line 18. 837Use of uninitialized value $g2 in substitution (s///) at - line 19. 838Use of uninitialized value $m1 in regexp compilation at - line 20. 839Use of uninitialized value $g2 in substitution (s///) at - line 20. 840Use of uninitialized value $g2 in substitution (s///) at - line 20. 841Use of uninitialized value $g2 in substitution (s///) at - line 21. 842Use of uninitialized value $g2 in substitution (s///) at - line 21. 843Use of uninitialized value $g1 in substitution iterator at - line 21. 844Use of uninitialized value $m1 in regexp compilation at - line 22. 845Use of uninitialized value $g2 in substitution (s///) at - line 22. 846Use of uninitialized value $g2 in substitution (s///) at - line 22. 847Use of uninitialized value $g1 in substitution iterator at - line 22. 848Use of uninitialized value in transliteration (tr///) at - line 23. 849Use of uninitialized value in transliteration (tr///) at - line 24. 850Use of uninitialized value $m1 in regexp compilation at - line 27. 851Use of uninitialized value $g1 in regexp compilation at - line 28. 852Use of uninitialized value $m1 in regexp compilation at - line 30. 853Use of uninitialized value $g1 in substitution iterator at - line 31. 854Use of uninitialized value $m1 in regexp compilation at - line 32. 855Use of uninitialized value $g1 in substitution iterator at - line 32. 856Use of uninitialized value $m1 in substitution (s///) at - line 33. 857Use of uninitialized value in substitution iterator at - line 36. 858Use of uninitialized value $m1 in transliteration (tr///) at - line 38. 859Use of uninitialized value $m1 in transliteration (tr///) at - line 39. 860######## 861use warnings 'uninitialized'; 862my ($m1); 863 864{ my $foo = "abc"; (substr($foo,0,0)) = ($m1) } 865EXPECT 866Use of uninitialized value $m1 in list assignment at - line 4. 867######## 868use warnings 'uninitialized'; 869our ($g1); 870 871study; 872study $g1; 873EXPECT 874Use of uninitialized value $_ in study at - line 4. 875Use of uninitialized value $g1 in study at - line 5. 876######## 877use warnings 'uninitialized'; 878my ($m1); 879 880pos()=0; 881pos($m1)=0; 882EXPECT 883Use of uninitialized value $_ in scalar assignment at - line 4. 884Use of uninitialized value $m1 in scalar assignment at - line 5. 885######## 886use warnings 'uninitialized'; 887my ($m1); 888our ($g1); 889 890$v = pos($m1) + 1; 891$v = pos($g1) + 1; 892$m1 = 0; 893$g1 = ""; 894$v = pos($m1) + 1; 895$v = pos($g1) + 1; 896EXPECT 897Use of uninitialized value in addition (+) at - line 5. 898Use of uninitialized value in addition (+) at - line 6. 899Use of uninitialized value in addition (+) at - line 9. 900Use of uninitialized value in addition (+) at - line 10. 901######## 902use warnings 'uninitialized'; 903my ($m1); 904 905{ my $x = "a" x $m1 } # NB LHS of repeat does not warn 906{ my @x = ("a") x $m1 } 907EXPECT 908Use of uninitialized value $m1 in repeat (x) at - line 4. 909Use of uninitialized value $m1 in repeat (x) at - line 5. 910######## 911use warnings 'uninitialized'; 912my ($m1, $v); 913our ($g1); 914 915$v = "$m1"; 916 917$v = $m1 lt $g1; 918$v = $m1 le $g1; 919$v = $m1 gt $g1; 920$v = $m1 ge $g1; 921$v = $m1 eq $g1; 922$v = $m1 ne $g1; 923$v = $m1 cmp $g1; 924EXPECT 925Use of uninitialized value $m1 in string at - line 5. 926Use of uninitialized value $m1 in string lt at - line 7. 927Use of uninitialized value $g1 in string lt at - line 7. 928Use of uninitialized value $m1 in string le at - line 8. 929Use of uninitialized value $g1 in string le at - line 8. 930Use of uninitialized value $m1 in string gt at - line 9. 931Use of uninitialized value $g1 in string gt at - line 9. 932Use of uninitialized value $m1 in string ge at - line 10. 933Use of uninitialized value $g1 in string ge at - line 10. 934Use of uninitialized value $m1 in string eq at - line 11. 935Use of uninitialized value $g1 in string eq at - line 11. 936Use of uninitialized value $m1 in string ne at - line 12. 937Use of uninitialized value $g1 in string ne at - line 12. 938Use of uninitialized value $m1 in string comparison (cmp) at - line 13. 939Use of uninitialized value $g1 in string comparison (cmp) at - line 13. 940######## 941use warnings 'uninitialized'; 942my ($m1, $v); 943our ($g1); 944 945$v = atan2($m1,$g1); 946$v = sin $m1; 947$v = cos $m1; 948$v = rand $m1; 949$v = srand $m1; 950$v = exp $m1; 951$v = eval {log $m1}; 952$v = sqrt $m1; 953$v = hex $m1; 954$v = oct $m1; 955$v = oct; 956$v = length; # does not warn 957EXPECT 958Use of uninitialized value $g1 in atan2 at - line 5. 959Use of uninitialized value $m1 in atan2 at - line 5. 960Use of uninitialized value $m1 in sin at - line 6. 961Use of uninitialized value $m1 in cos at - line 7. 962Use of uninitialized value $m1 in rand at - line 8. 963Use of uninitialized value $m1 in srand at - line 9. 964Use of uninitialized value $m1 in exp at - line 10. 965Use of uninitialized value $m1 in log at - line 11. 966Use of uninitialized value $m1 in sqrt at - line 12. 967Use of uninitialized value $m1 in hex at - line 13. 968Use of uninitialized value $m1 in oct at - line 14. 969Use of uninitialized value $_ in oct at - line 15. 970######## 971use warnings 'uninitialized'; 972my ($m1, $v); 973our ($g1); 974 975$v = substr $m1, $g1; 976$v = substr $m1, $g1, $m2; 977$v = substr $m1, $g1, $m2, $g2; undef $m1; 978substr($m1, $g1) = $g2; undef $m1; # NB global2 979substr($m1, $g1, $m2) = $g2; undef $m1; # isn't identified 980 981$v = eval {vec ($m1, $g1, $m2)}; 982eval {vec ($m1, $g1, $m2) = $g2}; undef $m1; # ditto 983 984$v = index $m1, $m2; 985$v = index $m1, $m2, $g1; 986$v = rindex $m1, $m2; 987$v = rindex $m1, $m2, $g1; 988EXPECT 989Use of uninitialized value $g1 in substr at - line 5. 990Use of uninitialized value $m1 in substr at - line 5. 991Use of uninitialized value $m2 in substr at - line 6. 992Use of uninitialized value $g1 in substr at - line 6. 993Use of uninitialized value $m1 in substr at - line 6. 994Use of uninitialized value $m2 in substr at - line 7. 995Use of uninitialized value $g1 in substr at - line 7. 996Use of uninitialized value $g2 in substr at - line 7. 997Use of uninitialized value $m1 in substr at - line 7. 998Use of uninitialized value $g1 in substr at - line 8. 999Use of uninitialized value $g2 in substr at - line 8. 1000Use of uninitialized value $m1 in substr at - line 8. 1001Use of uninitialized value $m2 in substr at - line 9. 1002Use of uninitialized value $g1 in substr at - line 9. 1003Use of uninitialized value $g2 in substr at - line 9. 1004Use of uninitialized value $m1 in substr at - line 9. 1005Use of uninitialized value $m2 in vec at - line 11. 1006Use of uninitialized value $g1 in vec at - line 11. 1007Use of uninitialized value $m1 in vec at - line 11. 1008Use of uninitialized value $m2 in vec at - line 12. 1009Use of uninitialized value $g1 in vec at - line 12. 1010Use of uninitialized value $m1 in index at - line 14. 1011Use of uninitialized value $m2 in index at - line 14. 1012Use of uninitialized value $g1 in index at - line 15. 1013Use of uninitialized value $m1 in index at - line 15. 1014Use of uninitialized value $m2 in index at - line 15. 1015Use of uninitialized value $m1 in rindex at - line 16. 1016Use of uninitialized value $m2 in rindex at - line 16. 1017Use of uninitialized value $g1 in rindex at - line 17. 1018Use of uninitialized value $m1 in rindex at - line 17. 1019Use of uninitialized value $m2 in rindex at - line 17. 1020######## 1021use warnings 'uninitialized'; 1022my ($m1, $v); 1023our ($g1); 1024 1025$v = sprintf $m1; 1026$v = sprintf '%d%d%d%d', $m1, $m2, $g1, $g2; 1027my $m3; eval {formline $m3 }; 1028formline '@<<@<<@<<@<<', $m1, $m2, $g1, $g2; 1029EXPECT 1030Use of uninitialized value $m1 in sprintf at - line 5. 1031Use of uninitialized value $m1 in sprintf at - line 6. 1032Use of uninitialized value $m2 in sprintf at - line 6. 1033Use of uninitialized value $g1 in sprintf at - line 6. 1034Use of uninitialized value $g2 in sprintf at - line 6. 1035Use of uninitialized value $m3 in formline at - line 7. 1036Use of uninitialized value $m1 in formline at - line 8. 1037Use of uninitialized value $m2 in formline at - line 8. 1038Use of uninitialized value $g1 in formline at - line 8. 1039Use of uninitialized value $g2 in formline at - line 8. 1040######## 1041# SKIP ? !$Config{d_crypt} 1042use warnings 'uninitialized'; 1043my ($m1, $v); 1044our ($g1); 1045 1046$v = crypt $m1, $g1; 1047 1048$v = ord; 1049$v = ord $m1; 1050$v = chr; 1051$v = chr $m1; 1052 1053$v = ucfirst; 1054$v = ucfirst $m1; 1055$v = lcfirst; 1056$v = lcfirst $m1; 1057$v = uc; 1058$v = uc $m1; 1059$v = lc; 1060$v = lc $m1; 1061 1062$v = quotemeta; 1063$v = quotemeta $m1; 1064EXPECT 1065Use of uninitialized value $m1 in crypt at - line 5. 1066Use of uninitialized value $g1 in crypt at - line 5. 1067Use of uninitialized value $_ in ord at - line 7. 1068Use of uninitialized value $m1 in ord at - line 8. 1069Use of uninitialized value $_ in chr at - line 9. 1070Use of uninitialized value $m1 in chr at - line 10. 1071Use of uninitialized value $_ in ucfirst at - line 12. 1072Use of uninitialized value $m1 in ucfirst at - line 13. 1073Use of uninitialized value $_ in lcfirst at - line 14. 1074Use of uninitialized value $m1 in lcfirst at - line 15. 1075Use of uninitialized value $_ in uc at - line 16. 1076Use of uninitialized value $m1 in uc at - line 17. 1077Use of uninitialized value $_ in lc at - line 18. 1078Use of uninitialized value $m1 in lc at - line 19. 1079Use of uninitialized value $_ in quotemeta at - line 21. 1080Use of uninitialized value $m1 in quotemeta at - line 22. 1081######## 1082use warnings 'uninitialized'; 1083my ($m1, $v1, $v2, $v3, $v4); 1084our ($g1); 1085 1086($v1,$v2,$v3,$v4) = split; 1087($v1,$v2,$v3,$v4) = split $m1; 1088($v1,$v2,$v3,$v4) = split $m1, $m2; 1089($v1,$v2,$v3,$v4) = split $m1, $m2, $g1; 1090 1091$v1 = join $m1; 1092$v2 = join $m1, $m2; 1093$v3 = join $m1, $m2, $m3; 1094EXPECT 1095Use of uninitialized value $_ in split at - line 5. 1096Use of uninitialized value $m1 in regexp compilation at - line 6. 1097Use of uninitialized value $_ in split at - line 6. 1098Use of uninitialized value $m1 in regexp compilation at - line 7. 1099Use of uninitialized value $m2 in split at - line 7. 1100Use of uninitialized value $m1 in regexp compilation at - line 8. 1101Use of uninitialized value $g1 in split at - line 8. 1102Use of uninitialized value $m2 in split at - line 8. 1103Use of uninitialized value $m1 in join or string at - line 10. 1104Use of uninitialized value $m2 in join or string at - line 11. 1105Use of uninitialized value $m1 in join or string at - line 12. 1106Use of uninitialized value $m2 in join or string at - line 12. 1107Use of uninitialized value $m3 in join or string at - line 12. 1108######## 1109use warnings 'uninitialized'; 1110my ($m1, $m2, @ma, $v); 1111 1112our @foo1=(1,undef); chomp @foo1; 1113my @foo2=(1,undef); chomp @foo2; 1114our @foo3=(1,undef); chop @foo3; 1115my @foo4=(1,undef); chop @foo4; 1116our @foo5=(1,undef); $v = sprintf "%s%s",@foo5; 1117my @foo6=(1,undef); $v = sprintf "%s%s",@foo6; 1118our %foo7=('foo'=>'bar','baz'=>undef); $v = sprintf "%s%s%s%s",%foo7; 1119my %foo8=('foo'=>'bar','baz'=>undef); $v = sprintf "%s%s%s%s",%foo8; 1120our @foo9 =(1,undef); $v = sprintf "%s%s%s%s",$m1,@foo9, $ma[2]; 1121my @foo10=(1,undef); $v = sprintf "%s%s%s%s",$m2,@foo10,$ma[2]; 1122our %foo11=('foo'=>'bar','baz'=>undef); $v = join '', %foo11; 1123my %foo12=('foo'=>'bar','baz'=>undef); $v = join '', %foo12; 1124our %foo13=(1..2000,'foo'=>'bar','baz'=>undef); $v = join '', %foo13; 1125my %foo14=(1..2000,'foo'=>'bar','baz'=>undef); $v = join '', %foo14; 1126EXPECT 1127Use of uninitialized value $foo1[1] in chomp at - line 4. 1128Use of uninitialized value $foo2[1] in chomp at - line 5. 1129Use of uninitialized value $foo3[1] in chop at - line 6. 1130Use of uninitialized value $foo4[1] in chop at - line 7. 1131Use of uninitialized value $foo5[1] in sprintf at - line 8. 1132Use of uninitialized value $foo6[1] in sprintf at - line 9. 1133Use of uninitialized value $foo7{"baz"} in sprintf at - line 10. 1134Use of uninitialized value $foo8{"baz"} in sprintf at - line 11. 1135Use of uninitialized value $m1 in sprintf at - line 12. 1136Use of uninitialized value $foo9[1] in sprintf at - line 12. 1137Use of uninitialized value in sprintf at - line 12. 1138Use of uninitialized value $m2 in sprintf at - line 13. 1139Use of uninitialized value $foo10[1] in sprintf at - line 13. 1140Use of uninitialized value in sprintf at - line 13. 1141Use of uninitialized value $foo11{"baz"} in join or string at - line 14. 1142Use of uninitialized value $foo12{"baz"} in join or string at - line 15. 1143Use of uninitialized value within %foo13 in join or string at - line 16. 1144Use of uninitialized value within %foo14 in join or string at - line 17. 1145######## 1146use warnings 'uninitialized'; 1147my ($v); 1148 1149undef $^A; $v = $^A + ${^FOO}; # should output '^A' not chr(1) 1150*GLOB1 = *GLOB2; 1151$v = $GLOB1 + 1; 1152$v = $GLOB2 + 1; 1153EXPECT 1154Use of uninitialized value $^FOO in addition (+) at - line 4. 1155Use of uninitialized value $^A in addition (+) at - line 4. 1156Use of uninitialized value $GLOB1 in addition (+) at - line 6. 1157Use of uninitialized value $GLOB2 in addition (+) at - line 7. 1158######## 1159use warnings 'uninitialized'; 1160my ($v); 1161 1162# check hash key is sanitised 1163my %h = ("\0011\002\r\n\t\f\"\\\x{1234}abcdefghijklmnopqrstuvwxyz", undef); 1164$v = join '', %h; 1165EXPECT 1166Use of uninitialized value $h{"\0011\2\r\n\t\f\"\\\x{1234}abcde"...} in join or string at - line 6. 1167######## 1168use warnings 'uninitialized'; 1169my ($m1, $v); 1170our ($g1); 1171 1172$v = eval { \&$m1 }; 1173$v = eval { \&$g1 }; 1174 1175my @a; 1176@a = splice @a, $m1, $g1; 1177$v = 1 + splice @a, $m1, $g1; 1178 1179my $x = bless [], 'Z'; 1180eval { $x->$m1() }; 1181 1182eval { &$m1() }; 1183eval { &$g1() }; 1184 1185warn $m1,$g1,"foo"; 1186 1187eval { die $m1, $g1 }; 1188 1189reset $m1; 1190reset $g1; 1191EXPECT 1192Use of uninitialized value $m1 in subroutine dereference at - line 5. 1193Use of uninitialized value $g1 in subroutine dereference at - line 6. 1194Use of uninitialized value $m1 in splice at - line 9. 1195Use of uninitialized value $g1 in splice at - line 9. 1196Use of uninitialized value $m1 in splice at - line 10. 1197Use of uninitialized value $g1 in splice at - line 10. 1198Use of uninitialized value in addition (+) at - line 10. 1199Use of uninitialized value $m1 in method lookup at - line 13. 1200Use of uninitialized value $m1 in warn at - line 18. 1201Use of uninitialized value $g1 in warn at - line 18. 1202foo at - line 18. 1203Use of uninitialized value $m1 in die at - line 20. 1204Use of uninitialized value $g1 in die at - line 20. 1205Use of uninitialized value $m1 in symbol reset at - line 22. 1206Use of uninitialized value $g1 in symbol reset at - line 23. 1207######## 1208use warnings 'uninitialized'; 1209my ($m1); 1210our ($g1); 1211 1212open FOO; # accesses $FOO 1213my $foo = 'FO'; 1214open($foo."O"); # accesses $FOO 1215open my $x; # accesses ${*$x} 1216open $foobar; # accesses ${*$foobar} 1217my $y; 1218open $y, $m1; 1219eval { open $y, $m1, $g1 }; 1220open $y, '<', $g1; 1221 1222sysopen $y, $m1, $m2; 1223sysopen $y, $m1, $g1, $m2; 1224 1225my $old = umask; 1226umask $m1; 1227umask $g1; 1228umask $old; 1229 1230binmode STDIN, $m1; 1231EXPECT 1232Use of uninitialized value $FOO in open at - line 5. 1233Use of uninitialized value in open at - line 7. 1234Use of uninitialized value in open at - line 8. 1235Use of uninitialized value in open at - line 9. 1236Use of uninitialized value $m1 in open at - line 11. 1237Use of uninitialized value $m1 in open at - line 12. 1238Use of uninitialized value $g1 in open at - line 13. 1239Use of uninitialized value $m2 in sysopen at - line 15. 1240Use of uninitialized value $m1 in sysopen at - line 15. 1241Use of uninitialized value $m2 in sysopen at - line 16. 1242Use of uninitialized value $g1 in sysopen at - line 16. 1243Use of uninitialized value $m1 in sysopen at - line 16. 1244Use of uninitialized value $m1 in umask at - line 19. 1245Use of uninitialized value $g1 in umask at - line 20. 1246Use of uninitialized value $m1 in binmode at - line 23. 1247######## 1248use warnings 'uninitialized'; 1249my ($m1); 1250our ($g1); 1251 1252eval { my $x; tie $x, $m1 }; 1253 1254eval { my $x; read $m1, $x, $g1 }; 1255eval { my $x; read $m1, $x, $g1, $g2 }; 1256eval { my $x; sysread $m1, $x, $g1 }; 1257eval { my $x; sysread $m1, $x, $g1, $g2 }; 1258EXPECT 1259Use of uninitialized value $m1 in tie at - line 5. 1260Use of uninitialized value $m1 in ref-to-glob cast at - line 7. 1261Use of uninitialized value $g1 in read at - line 7. 1262Use of uninitialized value $m1 in ref-to-glob cast at - line 8. 1263Use of uninitialized value $g1 in read at - line 8. 1264Use of uninitialized value $g2 in read at - line 8. 1265Use of uninitialized value $m1 in ref-to-glob cast at - line 9. 1266Use of uninitialized value $g1 in sysread at - line 9. 1267Use of uninitialized value $m1 in ref-to-glob cast at - line 10. 1268Use of uninitialized value $g1 in sysread at - line 10. 1269Use of uninitialized value $g2 in sysread at - line 10. 1270######## 1271use warnings 'uninitialized'; 1272my ($m1); 1273our ($g1, @ga); 1274 1275printf $m1; 1276printf STDERR "%d%d%d%d\n", $m1, $m2, $g1, $g2; 1277printf $ga[1000]; 1278printf STDERR "FOO1:%s\n", $ga[1000]; 1279printf STDERR "FOO2:%s%s%s%s\n", $m1, $g1, $ga[1],$m2; 1280printf STDERR "FOO3:%s%s%s\n", "X", $ga[1],"Y"; 1281EXPECT 1282Use of uninitialized value $m1 in printf at - line 5. 1283Use of uninitialized value $m1 in printf at - line 6. 1284Use of uninitialized value $m2 in printf at - line 6. 1285Use of uninitialized value $g1 in printf at - line 6. 1286Use of uninitialized value $g2 in printf at - line 6. 12870000 1288Use of uninitialized value in printf at - line 7. 1289Use of uninitialized value in printf at - line 8. 1290FOO1: 1291Use of uninitialized value $m1 in printf at - line 9. 1292Use of uninitialized value $g1 in printf at - line 9. 1293Use of uninitialized value in printf at - line 9. 1294Use of uninitialized value $m2 in printf at - line 9. 1295FOO2: 1296Use of uninitialized value in printf at - line 10. 1297FOO3:XY 1298######## 1299use warnings 'uninitialized'; 1300my ($m1); 1301our ($g1); 1302 1303eval { my $x; seek $x,$m1, $g1 }; 1304eval { my $x; sysseek $x,$m1, $g1 }; 1305eval { syswrite $m1, $g1 }; # logic changed - now won't try $g1 if $m1 is bad 1306# eval { syswrite STDERR, $m1 }; # XXX under utf8, can give 1307# eval { syswrite STDERR, $m1, $g1 }; # XXX different warnings 1308# eval { syswrite STDERR, $m1, $g1, $m2 }; 1309eval { my $x; socket $x, $m1, $g1, $m2 }; 1310eval { my ($x,$y); socketpair $x, $y, $m1, $g1, $m2 }; 1311EXPECT 1312Use of uninitialized value $x in ref-to-glob cast at - line 5. 1313Use of uninitialized value $g1 in seek at - line 5. 1314Use of uninitialized value $m1 in seek at - line 5. 1315Use of uninitialized value $x in ref-to-glob cast at - line 6. 1316Use of uninitialized value $g1 in sysseek at - line 6. 1317Use of uninitialized value $m1 in sysseek at - line 6. 1318Use of uninitialized value $m1 in ref-to-glob cast at - line 7. 1319Use of uninitialized value $m2 in socket at - line 11. 1320Use of uninitialized value $g1 in socket at - line 11. 1321Use of uninitialized value $m1 in socket at - line 11. 1322Use of uninitialized value $m2 in socketpair at - line 12. 1323Use of uninitialized value $g1 in socketpair at - line 12. 1324Use of uninitialized value $m1 in socketpair at - line 12. 1325######## 1326use Config; 1327BEGIN { 1328 if ( !$Config{d_flock} && 1329 !$Config{d_fcntl_can_lock} && 1330 !$Config{d_lockf} ) { 1331 print <<EOM ; 1332SKIPPED 1333# flock not present 1334EOM 1335 exit ; 1336 } 1337} 1338use warnings 'uninitialized'; 1339our ($g1); 1340 1341eval { my $x; flock $x, $g1 }; 1342EXPECT 1343Use of uninitialized value $x in ref-to-glob cast at - line 16. 1344Use of uninitialized value $g1 in flock at - line 16. 1345######## 1346use warnings 'uninitialized'; 1347my ($m1, $v); 1348our ($g1); 1349 1350stat; 1351lstat; 1352stat $m1; 1353lstat $g1; 1354 1355$v = -R $m1; 1356$v = -W $m1; 1357$v = -X $m1; 1358$v = -r $m1; 1359$v = -w $m1; 1360$v = -x $m1; 1361$v = -e $m1; 1362$v = -o $m1; 1363$v = -O $m1; 1364$v = -z $m1; 1365$v = -s $m1; 1366$v = -M $m1; 1367$v = -A $m1; 1368$v = -C $m1; 1369$v = -S $m1; 1370$v = -c $m1; 1371$v = -b $m1; 1372$v = -f $m1; 1373$v = -d $m1; 1374$v = -p $m1; 1375$v = -l $m1; 1376$v = -u $m1; 1377$v = -g $m1; 1378# $v = -k $m1; # XXX this is a no-op under win32 1379$v = -t $m1; 1380$v = -T $m1; 1381$v = -B $m1; 1382EXPECT 1383Use of uninitialized value $_ in stat at - line 5. 1384Use of uninitialized value $_ in lstat at - line 6. 1385Use of uninitialized value $m1 in stat at - line 7. 1386Use of uninitialized value $g1 in lstat at - line 8. 1387Use of uninitialized value $m1 in -R at - line 10. 1388Use of uninitialized value $m1 in -W at - line 11. 1389Use of uninitialized value $m1 in -X at - line 12. 1390Use of uninitialized value $m1 in -r at - line 13. 1391Use of uninitialized value $m1 in -w at - line 14. 1392Use of uninitialized value $m1 in -x at - line 15. 1393Use of uninitialized value $m1 in -e at - line 16. 1394Use of uninitialized value $m1 in -o at - line 17. 1395Use of uninitialized value $m1 in -O at - line 18. 1396Use of uninitialized value $m1 in -z at - line 19. 1397Use of uninitialized value $m1 in -s at - line 20. 1398Use of uninitialized value $m1 in -M at - line 21. 1399Use of uninitialized value $m1 in -A at - line 22. 1400Use of uninitialized value $m1 in -C at - line 23. 1401Use of uninitialized value $m1 in -S at - line 24. 1402Use of uninitialized value $m1 in -c at - line 25. 1403Use of uninitialized value $m1 in -b at - line 26. 1404Use of uninitialized value $m1 in -f at - line 27. 1405Use of uninitialized value $m1 in -d at - line 28. 1406Use of uninitialized value $m1 in -p at - line 29. 1407Use of uninitialized value $m1 in -l at - line 30. 1408Use of uninitialized value $m1 in -u at - line 31. 1409Use of uninitialized value $m1 in -g at - line 32. 1410Use of uninitialized value $m1 in -t at - line 34. 1411Use of uninitialized value $m1 in -T at - line 35. 1412Use of uninitialized value $m1 in -B at - line 36. 1413######## 1414use warnings 'uninitialized'; 1415my ($m1, $v); 1416our ($g1); 1417 1418$v = localtime $m1; 1419$v = gmtime $g1; 1420EXPECT 1421Use of uninitialized value $m1 in localtime at - line 5. 1422Use of uninitialized value $g1 in gmtime at - line 6. 1423######## 1424use warnings 'uninitialized'; 1425my ($m1, $m2, $v); 1426 1427$v = eval; 1428$v = eval $m1; 1429$m2 = q($m1); $v = 1 + eval $m2; 1430EXPECT 1431Use of uninitialized value $_ in eval "string" at - line 4. 1432Use of uninitialized value $m1 in eval "string" at - line 5. 1433Use of uninitialized value in addition (+) at - line 6. 1434######## 1435use warnings 'uninitialized'; 1436my ($m1); 1437 1438exit $m1; 1439EXPECT 1440Use of uninitialized value $m1 in exit at - line 4. 1441######## 1442use warnings 'uninitialized'; 1443my $undef; 1444 1445if ($undef == 3) { 1446} elsif ($undef == 0) { 1447} 1448EXPECT 1449Use of uninitialized value $undef in numeric eq (==) at - line 4. 1450Use of uninitialized value $undef in numeric eq (==) at - line 5. 1451######## 1452# TODO long standing bug - conditions of while loops 1453use warnings; 1454 1455my $c; 1456my $d = 1; 1457while ($c == 0 && $d) { 1458 # a 1459 # few 1460 # blank 1461 # lines 1462 undef $d; 1463} 1464EXPECT 1465Use of uninitialized value $c in numeric eq (==) at - line 5. 1466Use of uninitialized value $c in numeric eq (==) at - line 5. 1467######## 1468# TODO long standing bug - conditions of until loops 1469use warnings; 1470 1471my $c; 1472my $d; 1473until ($c == 1) { 1474 # a 1475 # few 1476 # blank 1477 # lines 1478 $c = 1 if ++$d == 2; 1479} 1480EXPECT 1481Use of uninitialized value $c in numeric eq (==) at - line 5. 1482Use of uninitialized value $c in numeric eq (==) at - line 5. 1483######## 1484# TODO long standing bug - conditions of for loops 1485use warnings; 1486 1487my $c; 1488my $d; 1489for ($d = 1; $c == 0 && $d; ) { 1490 # a 1491 # few 1492 # blank 1493 # lines 1494 undef $d; 1495} 1496 1497my $e; 1498for ($d = 2; $d > 0; $e = !($c == 0)) { 1499 # a 1500 # few 1501 # blank 1502 # lines 1503 --$d; 1504} 1505EXPECT 1506Use of uninitialized value $c in numeric eq (==) at - line 5. 1507Use of uninitialized value $c in numeric eq (==) at - line 5. 1508Use of uninitialized value $c in numeric eq (==) at - line 14. 1509Use of uninitialized value $c in numeric eq (==) at - line 14. 1510######## 1511# TODO long standing bug - more general variant of the above problem 1512use warnings; 1513my $undef; 1514 1515my $a = $undef + 1; 1516my $b 1517 = $undef 1518 + 1; 1519EXPECT 1520Use of uninitialized value $undef in addition (+) at - line 4. 1521Use of uninitialized value $undef in addition (+) at - line 7. 1522######## 1523use warnings 'uninitialized'; 1524my ($r1, $r2); 1525$_ = undef; 1526$v = reverse; 1527$v = reverse $r1; 1528$v = reverse "abc", $r2, "def"; 1529EXPECT 1530Use of uninitialized value in reverse at - line 4. 1531Use of uninitialized value $r1 in reverse at - line 5. 1532Use of uninitialized value $r2 in reverse at - line 6. 1533######## 1534use warnings 'uninitialized'; 1535# 1536# ops that can return undef for defined args 1537# split into separate tests to diagnose the cause of daily build smoke 1538# 1539# *** `` not tested: Windows produces an error on STDERR 1540# *** ditto qx() 1541# *** pipe() not tested 1542# *** ioctl not tested 1543# *** socket not tested 1544# *** socketpair not tested 1545# *** bind not tested 1546# *** connect not tested 1547# *** listen not tested 1548# *** shutdown not tested 1549# *** setsockopt not tested 1550# *** getpeername not tested 1551# *** readdir not tested 1552# *** telldir not tested 1553# *** seekdir not tested 1554# *** rewinddir not tested 1555# *** closedir not tested 1556# *** gmtime not tested 1557# *** alarm not tested 1558# *** semget not tested 1559# *** getlogin not tested 1560EXPECT 1561######## 1562use warnings 'uninitialized'; 1563if ($^O eq 'MSWin32') { 1564 print <<'EOM'; 1565SKIPPED 1566# `` produces an error on STDERR on Win32 1567EOM 1568 exit; 1569} 1570my $nocmd = '/no/such/command'; 1571my $v; 1572$v = 1 + `$nocmd`; 1573EXPECT 1574Use of uninitialized value in addition (+) at - line 11. 1575######## 1576use warnings 'uninitialized'; 1577if ($^O eq 'MSWin32') { 1578 print <<'EOM'; 1579SKIPPED 1580# qx produces an error on STDERR on Win32 1581EOM 1582 exit; 1583} 1584my $nocmd = '/no/such/command'; 1585my $v; 1586$v = 1 + qx($nocmd); 1587EXPECT 1588Use of uninitialized value in addition (+) at - line 11. 1589######## 1590use warnings 'uninitialized'; 1591my $nan = "NaN"; 1592if ($nan == $nan) { 1593 print <<'EOM'; 1594SKIPPED 1595# NaN not supported here. 1596EOM 1597 exit; 1598} 1599my $v; 1600$v = 1 + ($nan <=> 1); 1601EXPECT 1602Use of uninitialized value in addition (+) at - line 11. 1603######## 1604use warnings 'uninitialized'; 1605if ($^O eq 'MSWin32') { 1606 print <<'EOM'; 1607SKIPPED 1608# -k produces no warning on Win32 1609EOM 1610 exit; 1611} 1612my $nofile = '/no/such/file'; 1613my $v; 1614$v = 1 + -k $nofile; 1615EXPECT 1616Use of uninitialized value in addition (+) at - line 11. 1617######## 1618use warnings 'uninitialized'; 1619my $nofile = '/no/such/file'; 1620my $v; 1621my $f = ""; 1622$v = 1 + open($f, $nofile); 1623EXPECT 1624Use of uninitialized value in addition (+) at - line 5. 1625######## 1626use warnings 'uninitialized'; 1627my $nofile = '/no/such/file'; 1628my $v; 1629$v = 1 + fileno($nofile); 1630EXPECT 1631Use of uninitialized value in addition (+) at - line 4. 1632######## 1633use warnings 'uninitialized'; 1634my $nofile = '/no/such/file'; 1635my $v; 1636$v = 1 + binmode($nofile); 1637EXPECT 1638Use of uninitialized value in addition (+) at - line 4. 1639######## 1640use warnings 'uninitialized'; 1641my $nofile = '/no/such/file'; 1642my $v; 1643$v = 1 + tied($nofile); 1644EXPECT 1645Use of uninitialized value in addition (+) at - line 4. 1646######## 1647use warnings 'uninitialized'; 1648my $nofile = '/no/such/file'; 1649my $v; 1650$v = 1 + getc($nofile); 1651EXPECT 1652Use of uninitialized value in addition (+) at - line 4. 1653######## 1654use warnings 'uninitialized'; 1655my $nofile = '/no/such/file'; 1656my $v; 1657$v = 1 + sysread($nofile, my $buf,1); 1658EXPECT 1659Use of uninitialized value in addition (+) at - line 4. 1660######## 1661use warnings 'uninitialized'; 1662my $nofile = '/no/such/file'; 1663my $v; 1664$v = 1 + eval { send($nofile, $buf,0) }; 1665EXPECT 1666Use of uninitialized value in addition (+) at - line 4. 1667######## 1668use warnings 'uninitialized'; 1669my $nofile = '/no/such/file'; 1670my $v; 1671my $fh = ""; 1672$v = 1 + eval { accept($fh, $nofile) }; 1673EXPECT 1674Use of uninitialized value in addition (+) at - line 5. 1675######## 1676use warnings 'uninitialized'; 1677my $nofile = '/no/such/file'; 1678my $v; 1679$v = 1 + (-r $nofile); 1680EXPECT 1681Use of uninitialized value in addition (+) at - line 4. 1682######## 1683use warnings 'uninitialized'; 1684my $nofile = '/no/such/file'; 1685my $v; 1686$v = 1 + (-w $nofile); 1687EXPECT 1688Use of uninitialized value in addition (+) at - line 4. 1689######## 1690use warnings 'uninitialized'; 1691my $nofile = '/no/such/file'; 1692my $v; 1693$v = 1 + (-x $nofile); 1694EXPECT 1695Use of uninitialized value in addition (+) at - line 4. 1696######## 1697use warnings 'uninitialized'; 1698my $nofile = '/no/such/file'; 1699my $v; 1700$v = 1 + (-o $nofile); 1701EXPECT 1702Use of uninitialized value in addition (+) at - line 4. 1703######## 1704use warnings 'uninitialized'; 1705my $nofile = '/no/such/file'; 1706my $v; 1707$v = 1 + (-R $nofile); 1708EXPECT 1709Use of uninitialized value in addition (+) at - line 4. 1710######## 1711use warnings 'uninitialized'; 1712my $nofile = '/no/such/file'; 1713my $v; 1714$v = 1 + (-W $nofile); 1715EXPECT 1716Use of uninitialized value in addition (+) at - line 4. 1717######## 1718use warnings 'uninitialized'; 1719my $nofile = '/no/such/file'; 1720my $v; 1721$v = 1 + (-X $nofile); 1722EXPECT 1723Use of uninitialized value in addition (+) at - line 4. 1724######## 1725use warnings 'uninitialized'; 1726my $nofile = '/no/such/file'; 1727my $v; 1728$v = 1 + (-O $nofile); 1729EXPECT 1730Use of uninitialized value in addition (+) at - line 4. 1731######## 1732use warnings 'uninitialized'; 1733my $nofile = '/no/such/file'; 1734my $v; 1735$v = 1 + (-e $nofile); 1736EXPECT 1737Use of uninitialized value in addition (+) at - line 4. 1738######## 1739use warnings 'uninitialized'; 1740my $nofile = '/no/such/file'; 1741my $v; 1742$v = 1 + (-z $nofile); 1743EXPECT 1744Use of uninitialized value in addition (+) at - line 4. 1745######## 1746use warnings 'uninitialized'; 1747my $nofile = '/no/such/file'; 1748my $v; 1749$v = 1 + (-s $nofile); 1750EXPECT 1751Use of uninitialized value in addition (+) at - line 4. 1752######## 1753use warnings 'uninitialized'; 1754my $nofile = '/no/such/file'; 1755my $v; 1756$v = 1 + (-f $nofile); 1757EXPECT 1758Use of uninitialized value in addition (+) at - line 4. 1759######## 1760use warnings 'uninitialized'; 1761my $nofile = '/no/such/file'; 1762my $v; 1763$v = 1 + (-d $nofile); 1764EXPECT 1765Use of uninitialized value in addition (+) at - line 4. 1766######## 1767use warnings 'uninitialized'; 1768my $nofile = '/no/such/file'; 1769my $v; 1770$v = 1 + (-l $nofile); 1771EXPECT 1772Use of uninitialized value in addition (+) at - line 4. 1773######## 1774use warnings 'uninitialized'; 1775my $nofile = '/no/such/file'; 1776my $v; 1777$v = 1 + (-p $nofile); 1778EXPECT 1779Use of uninitialized value in addition (+) at - line 4. 1780######## 1781use warnings 'uninitialized'; 1782my $nofile = '/no/such/file'; 1783my $v; 1784$v = 1 + (-S $nofile); 1785EXPECT 1786Use of uninitialized value in addition (+) at - line 4. 1787######## 1788use warnings 'uninitialized'; 1789my $nofile = '/no/such/file'; 1790my $v; 1791$v = 1 + (-b $nofile); 1792EXPECT 1793Use of uninitialized value in addition (+) at - line 4. 1794######## 1795use warnings 'uninitialized'; 1796my $nofile = '/no/such/file'; 1797my $v; 1798$v = 1 + (-c $nofile); 1799EXPECT 1800Use of uninitialized value in addition (+) at - line 4. 1801######## 1802use warnings 'uninitialized'; 1803my $nofile = '/no/such/file'; 1804my $v; 1805$v = 1 + (-t $nofile); 1806EXPECT 1807Use of uninitialized value in addition (+) at - line 4. 1808######## 1809use warnings 'uninitialized'; 1810my $nofile = '/no/such/file'; 1811my $v; 1812$v = 1 + (-u $nofile); 1813EXPECT 1814Use of uninitialized value in addition (+) at - line 4. 1815######## 1816use warnings 'uninitialized'; 1817my $nofile = '/no/such/file'; 1818my $v; 1819$v = 1 + (-g $nofile); 1820EXPECT 1821Use of uninitialized value in addition (+) at - line 4. 1822######## 1823use warnings 'uninitialized'; 1824my $nofile = '/no/such/file'; 1825my $v; 1826$v = 1 + (-T $nofile); 1827EXPECT 1828Use of uninitialized value in addition (+) at - line 4. 1829######## 1830use warnings 'uninitialized'; 1831my $nofile = '/no/such/file'; 1832my $v; 1833$v = 1 + (-B $nofile); 1834EXPECT 1835Use of uninitialized value in addition (+) at - line 4. 1836######## 1837use warnings 'uninitialized'; 1838my $nofile = '/no/such/file'; 1839my $v; 1840$v = 1 + (-M $nofile); 1841EXPECT 1842Use of uninitialized value in addition (+) at - line 4. 1843######## 1844use warnings 'uninitialized'; 1845my $nofile = '/no/such/file'; 1846my $v; 1847$v = 1 + (-A $nofile); 1848EXPECT 1849Use of uninitialized value in addition (+) at - line 4. 1850######## 1851use warnings 'uninitialized'; 1852my $nofile = '/no/such/file'; 1853my $v; 1854$v = 1 + (-C $nofile); 1855EXPECT 1856Use of uninitialized value in addition (+) at - line 4. 1857######## 1858use warnings 'uninitialized'; 1859my $nofile = '/no/such/file'; 1860my $v; 1861$v = 1 + eval { readlink $nofile }; 1862EXPECT 1863Use of uninitialized value in addition (+) at - line 4. 1864######## 1865use warnings 'uninitialized'; 1866my $nofile = '/no/such/file'; 1867my $v; 1868$v = 1 + opendir($f, $nofile); 1869EXPECT 1870Use of uninitialized value in addition (+) at - line 4. 1871######## 1872use warnings 'uninitialized'; 1873my $nofile = '/no/such/file'; 1874my $v; 1875$v = 1 + undef; 1876EXPECT 1877Use of uninitialized value in addition (+) at - line 4. 1878######## 1879use warnings 'uninitialized'; 1880my $nofile = '/no/such/file'; 1881my $v; 1882my $x = 1; $v = 1 + undef($x); 1883EXPECT 1884Use of uninitialized value in addition (+) at - line 4. 1885######## 1886use warnings 'uninitialized'; 1887my $v; 1888my $emptys = ""; 1889$v = 1 + substr($emptys,2,1); 1890EXPECT 1891Use of uninitialized value in addition (+) at - line 4. 1892######## 1893use warnings 'uninitialized'; 1894my $v; 1895my @emptya; 1896$v = 1 + each @emptya; 1897EXPECT 1898Use of uninitialized value in addition (+) at - line 4. 1899######## 1900use warnings 'uninitialized'; 1901my $v; 1902my %emptyh; 1903$v = 1 + each %emptyh; 1904EXPECT 1905Use of uninitialized value in addition (+) at - line 4. 1906######## 1907use warnings 'uninitialized'; 1908my $v; 1909my @emptya; 1910$v = 1 + sort @emptya; 1911EXPECT 1912Use of uninitialized value in addition (+) at - line 4. 1913######## 1914use warnings 'uninitialized'; 1915my $v; 1916my $zero = 0; $v = 1 + caller($zero); 1917EXPECT 1918Use of uninitialized value in addition (+) at - line 3. 1919######## 1920use warnings 'uninitialized'; 1921my $nofile = '/no/such/file'; 1922my $v; 1923$v = 1 + do $nofile; 1924EXPECT 1925Use of uninitialized value in addition (+) at - line 4. 1926######## 1927use warnings 'uninitialized'; 1928my $v; 1929my $fn = sub {}; 1930$v = 1 + prototype $fn; 1931EXPECT 1932Use of uninitialized value in addition (+) at - line 4. 1933######## 1934use warnings 'uninitialized'; no warnings 'experimental::smartmatch'; 1935my $v; 1936my $fn = sub {}; 1937$v = 1 + (1 ~~ $fn); 1938EXPECT 1939Use of uninitialized value in addition (+) at - line 4. 1940######## 1941use warnings 'uninitialized'; 1942my $v; 1943my $f = ""; 1944$v = 1 + (print STDIN $f); # print to STDIN returns undef 1945EXPECT 1946Use of uninitialized value in addition (+) at - line 4. 1947######## 1948use warnings 'uninitialized'; 1949my $v; 1950my $f = ""; 1951$v = 1 + (printf STDIN "%s", $f); 1952EXPECT 1953Use of uninitialized value in addition (+) at - line 4. 1954######## 1955use warnings 'uninitialized'; 1956my $v; 1957my $f = ""; 1958{ use feature 'say'; $v = 1 + (say STDIN "%s", $f); } 1959EXPECT 1960Use of uninitialized value in addition (+) at - line 4. 1961######## 1962use warnings 'uninitialized'; 1963my $v; 1964my $f = ""; 1965$v = 1 + (unpack("",$f)); 1966EXPECT 1967Use of uninitialized value in addition (+) at - line 4. 1968######## 1969use warnings 'uninitialized'; 1970my $nofile = '/no/such/file'; 1971my $v; 1972my $f = ""; 1973$v = 1 + sysopen($f, $nofile, 0); 1974EXPECT 1975Use of uninitialized value in addition (+) at - line 5. 1976######## 1977use warnings 'uninitialized'; 1978my $v; 1979{ my $x = -1; $v = 1 + sysseek(DATA, $x, 0); } 1980__END__ 1981EXPECT 1982Use of uninitialized value in addition (+) at - line 3. 1983######## 1984use warnings 'uninitialized'; 1985delete $::{'Foo::'}; 1986my $moo = $Foo::BAR + 42; 1987__END__ 1988EXPECT 1989Use of uninitialized value in addition (+) at - line 3. 1990######## 1991use warnings 'uninitialized'; 1992use constant {u=>undef, v=>undef}; 1993sub foo () {u} 1994sub foo () {v} 1995EXPECT 1996######## 1997# [perl #72090] 1998use warnings 'uninitialized'; 1999$a = @$a > 0; 2000EXPECT 2001Use of uninitialized value $a in array dereference at - line 3. 2002Use of uninitialized value in numeric gt (>) at - line 3. 2003######## 2004# [perl #103766] 2005use warnings 'uninitialized'; 2006"@{[ $x ]}"; 2007EXPECT 2008Use of uninitialized value in join or string at - line 3. 2009######## 2010# inside formats 2011use warnings 'uninitialized'; 2012my $x; 2013format = 2014@ 2015"$x"; 2016. 2017write; 2018EXPECT 2019Use of uninitialized value $x in string at - line 6. 2020######## 2021# NAME off-by-one error in hash bucket walk in key detection logic 2022use warnings 'uninitialized'; 2023 2024for ( 0 .. 20 ) { # we assume that this means we test keys for every bucket 2025 my %h= ( $_ => undef ); 2026 my $s= sprintf "%s", $h{$_}; 2027} 2028EXPECT 2029Use of uninitialized value $h{"0"} in sprintf at - line 5. 2030Use of uninitialized value $h{"1"} in sprintf at - line 5. 2031Use of uninitialized value $h{"2"} in sprintf at - line 5. 2032Use of uninitialized value $h{"3"} in sprintf at - line 5. 2033Use of uninitialized value $h{"4"} in sprintf at - line 5. 2034Use of uninitialized value $h{"5"} in sprintf at - line 5. 2035Use of uninitialized value $h{"6"} in sprintf at - line 5. 2036Use of uninitialized value $h{"7"} in sprintf at - line 5. 2037Use of uninitialized value $h{"8"} in sprintf at - line 5. 2038Use of uninitialized value $h{"9"} in sprintf at - line 5. 2039Use of uninitialized value $h{"10"} in sprintf at - line 5. 2040Use of uninitialized value $h{"11"} in sprintf at - line 5. 2041Use of uninitialized value $h{"12"} in sprintf at - line 5. 2042Use of uninitialized value $h{"13"} in sprintf at - line 5. 2043Use of uninitialized value $h{"14"} in sprintf at - line 5. 2044Use of uninitialized value $h{"15"} in sprintf at - line 5. 2045Use of uninitialized value $h{"16"} in sprintf at - line 5. 2046Use of uninitialized value $h{"17"} in sprintf at - line 5. 2047Use of uninitialized value $h{"18"} in sprintf at - line 5. 2048Use of uninitialized value $h{"19"} in sprintf at - line 5. 2049Use of uninitialized value $h{"20"} in sprintf at - line 5. 2050######## 2051# NAME SvPOK && SvLEN==0 should not produce uninit warning 2052use warnings 'uninitialized'; 2053 2054$v = int(${qr||}); # sv_2iv on a regexp 2055$v = 1.1 * ${qr||}; # sv_2nv on a regexp 2056$v = ${qr||} << 2; # sv_2uv on a regexp 2057 2058sub TIESCALAR{bless[]} 2059sub FETCH {${qr||}} 2060tie $t, ""; 2061$v = 1.1 * $t; # sv_2nv on a tied regexp 2062 2063EXPECT 2064######## 2065# multi-level uninitialised array/hash indexes 2066use warnings 'uninitialized'; 2067 2068our ($i0, $i2, $i4, $i6, $i8, $i10, $i12); 2069my ($i1, $i3, $i5, $i7, $i9, $i11, $i13); 2070 2071my (@a,%h); 2072my $v; 2073 2074 2075# use enough depth that OP_MULTIDEREF needs more than one action word 2076 2077$v = $a[$i0]{$i1}[$i2]{$i3}[$i4]{$i5}[$i6]{$i7}[$i8]{$i9}[$i10]{$i11}[$i12]{$i13}; 2078$v = $h{$i0}[$i1]{$i2}[$i3]{$i4}[$i5]{$i6}[$i7]{$i8}[$i9]{$i10}[$i11]{$i12}[$i13]; 2079 2080EXPECT 2081Use of uninitialized value $i0 in array element at - line 13. 2082Use of uninitialized value $i1 in hash element at - line 13. 2083Use of uninitialized value $i2 in array element at - line 13. 2084Use of uninitialized value $i3 in hash element at - line 13. 2085Use of uninitialized value $i4 in array element at - line 13. 2086Use of uninitialized value $i5 in hash element at - line 13. 2087Use of uninitialized value $i6 in array element at - line 13. 2088Use of uninitialized value $i7 in hash element at - line 13. 2089Use of uninitialized value $i8 in array element at - line 13. 2090Use of uninitialized value $i9 in hash element at - line 13. 2091Use of uninitialized value $i10 in array element at - line 13. 2092Use of uninitialized value $i11 in hash element at - line 13. 2093Use of uninitialized value $i12 in array element at - line 13. 2094Use of uninitialized value $i13 in hash element at - line 13. 2095Use of uninitialized value $i0 in hash element at - line 14. 2096Use of uninitialized value $i1 in array element at - line 14. 2097Use of uninitialized value $i2 in hash element at - line 14. 2098Use of uninitialized value $i3 in array element at - line 14. 2099Use of uninitialized value $i4 in hash element at - line 14. 2100Use of uninitialized value $i5 in array element at - line 14. 2101Use of uninitialized value $i6 in hash element at - line 14. 2102Use of uninitialized value $i7 in array element at - line 14. 2103Use of uninitialized value $i8 in hash element at - line 14. 2104Use of uninitialized value $i9 in array element at - line 14. 2105Use of uninitialized value $i10 in hash element at - line 14. 2106Use of uninitialized value $i11 in array element at - line 14. 2107Use of uninitialized value $i12 in hash element at - line 14. 2108Use of uninitialized value $i13 in array element at - line 14. 2109######## 2110# misc multideref 2111use warnings 'uninitialized'; 2112my ($i,$j,$k); 2113my @a; 2114my @ra = \@a; 2115my $v; 2116$v = exists $a[$i]{$k}; 2117$v = delete $a[$i]{$k}; 2118$v = local $a[$i]{$k}; 2119delete $a[$i]{$k}; 2120$v = $ra->[$i+$j]{$k}; 2121$v = ($ra//0)->[$i]{$k}; 2122$v = $a[length $i]{$k} 2123EXPECT 2124Use of uninitialized value $i in array element at - line 7. 2125Use of uninitialized value $k in exists at - line 7. 2126Use of uninitialized value $i in array element at - line 8. 2127Use of uninitialized value $k in delete at - line 8. 2128Use of uninitialized value $i in array element at - line 9. 2129Use of uninitialized value $k in hash element at - line 9. 2130Use of uninitialized value $k in hash element at - line 9. 2131Use of uninitialized value $k in hash element at - line 9. 2132Use of uninitialized value $i in array element at - line 10. 2133Use of uninitialized value $k in delete at - line 10. 2134Use of uninitialized value $j in addition (+) at - line 11. 2135Use of uninitialized value $i in addition (+) at - line 11. 2136Use of uninitialized value $k in hash element at - line 11. 2137Use of uninitialized value $i in array element at - line 12. 2138Use of uninitialized value $k in hash element at - line 12. 2139Use of uninitialized value $i in array element at - line 13. 2140Use of uninitialized value $k in hash element at - line 13. 2141