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