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