1 op.c AOK 2 3 Found = in conditional, should be == 4 1 if $a = 1 ; 5 6 Use of implicit split to @_ is deprecated 7 split ; 8 9 Use of implicit split to @_ is deprecated 10 $a = split ; 11 12 Useless use of time in void context 13 Useless use of a variable in void context 14 Useless use of a constant in void context 15 time ; 16 $a ; 17 "abc" 18 19 Useless use of sort in scalar context 20 my $x = sort (2,1,3); 21 22 Applying %s to %s will act on scalar(%s) 23 my $a ; my @a = () ; my %a = () ; my $b = \@a ; my $c = \%a ; 24 @a =~ /abc/ ; 25 @a =~ s/a/b/ ; 26 @a =~ tr/a/b/ ; 27 @$b =~ /abc/ ; 28 @$b =~ s/a/b/ ; 29 @$b =~ tr/a/b/ ; 30 %a =~ /abc/ ; 31 %a =~ s/a/b/ ; 32 %a =~ tr/a/b/ ; 33 %$c =~ /abc/ ; 34 %$c =~ s/a/b/ ; 35 %$c =~ tr/a/b/ ; 36 37 38 Parentheses missing around "my" list at -e line 1. 39 my $a, $b = (1,2); 40 41 Parentheses missing around "local" list at -e line 1. 42 local $a, $b = (1,2); 43 44 Bareword found in conditional at -e line 1. 45 use warnings 'bareword'; my $x = print(ABC || 1); 46 47 Value of %s may be \"0\"; use \"defined\" 48 $x = 1 if $x = <FH> ; 49 $x = 1 while $x = <FH> ; 50 51 Subroutine fred redefined at -e line 1. 52 sub fred{1;} sub fred{1;} 53 54 Constant subroutine %s redefined 55 sub fred() {1;} sub fred() {1;} 56 57 Format FRED redefined at /tmp/x line 5. 58 format FRED = 59 . 60 format FRED = 61 . 62 63 Array @%s missing the @ in argument %d of %s() 64 push fred ; 65 66 Hash %%%s missing the %% in argument %d of %s() 67 keys joe ; 68 69 Statement unlikely to be reached 70 (Maybe you meant system() when you said exec()? 71 exec "true" ; my $a 72 73 defined(@array) is deprecated 74 (Maybe you should just omit the defined()?) 75 my @a ; defined @a ; 76 defined (@a = (1,2,3)) ; 77 78 defined(%hash) is deprecated 79 (Maybe you should just omit the defined()?) 80 my %h ; defined %h ; 81 82 /---/ should probably be written as "---" 83 join(/---/, @foo); 84 85 %s() called too early to check prototype [Perl_peep] 86 fred() ; sub fred ($$) {} 87 88 89 Package `%s' not found (did you use the incorrect case?) 90 91 Use of /g modifier is meaningless in split 92 93 Possible precedence problem on bitwise %c operator [Perl_ck_bitop] 94 95 Mandatory Warnings 96 ------------------ 97 Prototype mismatch: [cv_ckproto] 98 sub fred() ; 99 sub fred($) {} 100 101 Runaway prototype [newSUB] TODO 102 oops: oopsAV [oopsAV] TODO 103 oops: oopsHV [oopsHV] TODO 104 105__END__ 106# op.c 107use warnings 'syntax' ; 1081 if $a = 1 ; 109no warnings 'syntax' ; 1101 if $a = 1 ; 111EXPECT 112Found = in conditional, should be == at - line 3. 113######## 114# op.c 115use warnings 'deprecated' ; 116split ; 117no warnings 'deprecated' ; 118split ; 119EXPECT 120Use of implicit split to @_ is deprecated at - line 3. 121######## 122# op.c 123use warnings 'deprecated' ; 124$a = split ; 125no warnings 'deprecated' ; 126$a = split ; 127EXPECT 128Use of implicit split to @_ is deprecated at - line 3. 129######## 130# op.c 131use warnings 'deprecated'; 132my (@foo, %foo); 133%main::foo->{"bar"}; 134%foo->{"bar"}; 135@main::foo->[23]; 136@foo->[23]; 137$main::foo = {}; %$main::foo->{"bar"}; 138$foo = {}; %$foo->{"bar"}; 139$main::foo = []; @$main::foo->[34]; 140$foo = []; @$foo->[34]; 141no warnings 'deprecated'; 142%main::foo->{"bar"}; 143%foo->{"bar"}; 144@main::foo->[23]; 145@foo->[23]; 146$main::foo = {}; %$main::foo->{"bar"}; 147$foo = {}; %$foo->{"bar"}; 148$main::foo = []; @$main::foo->[34]; 149$foo = []; @$foo->[34]; 150EXPECT 151Using a hash as a reference is deprecated at - line 4. 152Using a hash as a reference is deprecated at - line 5. 153Using an array as a reference is deprecated at - line 6. 154Using an array as a reference is deprecated at - line 7. 155Using a hash as a reference is deprecated at - line 8. 156Using a hash as a reference is deprecated at - line 9. 157Using an array as a reference is deprecated at - line 10. 158Using an array as a reference is deprecated at - line 11. 159######## 160# op.c 161use warnings 'void' ; close STDIN ; 1621 x 3 ; # OP_REPEAT 163 # OP_GVSV 164wantarray ; # OP_WANTARRAY 165 # OP_GV 166 # OP_PADSV 167 # OP_PADAV 168 # OP_PADHV 169 # OP_PADANY 170 # OP_AV2ARYLEN 171ref ; # OP_REF 172\@a ; # OP_REFGEN 173\$a ; # OP_SREFGEN 174defined $a ; # OP_DEFINED 175hex $a ; # OP_HEX 176oct $a ; # OP_OCT 177length $a ; # OP_LENGTH 178substr $a,1 ; # OP_SUBSTR 179vec $a,1,2 ; # OP_VEC 180index $a,1,2 ; # OP_INDEX 181rindex $a,1,2 ; # OP_RINDEX 182sprintf $a ; # OP_SPRINTF 183$a[0] ; # OP_AELEM 184 # OP_AELEMFAST 185@a[0] ; # OP_ASLICE 186#values %a ; # OP_VALUES 187#keys %a ; # OP_KEYS 188$a{0} ; # OP_HELEM 189@a{0} ; # OP_HSLICE 190unpack "a", "a" ; # OP_UNPACK 191pack $a,"" ; # OP_PACK 192join "" ; # OP_JOIN 193(@a)[0,1] ; # OP_LSLICE 194 # OP_ANONLIST 195 # OP_ANONHASH 196sort(1,2) ; # OP_SORT 197reverse(1,2) ; # OP_REVERSE 198 # OP_RANGE 199 # OP_FLIP 200(1 ..2) ; # OP_FLOP 201caller ; # OP_CALLER 202fileno STDIN ; # OP_FILENO 203eof STDIN ; # OP_EOF 204tell STDIN ; # OP_TELL 205readlink 1; # OP_READLINK 206time ; # OP_TIME 207localtime ; # OP_LOCALTIME 208gmtime ; # OP_GMTIME 209eval { getgrnam 1 }; # OP_GGRNAM 210eval { getgrgid 1 }; # OP_GGRGID 211eval { getpwnam 1 }; # OP_GPWNAM 212eval { getpwuid 1 }; # OP_GPWUID 213prototype "foo"; # OP_PROTOTYPE 214EXPECT 215Useless use of repeat (x) in void context at - line 3. 216Useless use of wantarray in void context at - line 5. 217Useless use of reference-type operator in void context at - line 12. 218Useless use of reference constructor in void context at - line 13. 219Useless use of single ref constructor in void context at - line 14. 220Useless use of defined operator in void context at - line 15. 221Useless use of hex in void context at - line 16. 222Useless use of oct in void context at - line 17. 223Useless use of length in void context at - line 18. 224Useless use of substr in void context at - line 19. 225Useless use of vec in void context at - line 20. 226Useless use of index in void context at - line 21. 227Useless use of rindex in void context at - line 22. 228Useless use of sprintf in void context at - line 23. 229Useless use of array element in void context at - line 24. 230Useless use of array slice in void context at - line 26. 231Useless use of hash element in void context at - line 29. 232Useless use of hash slice in void context at - line 30. 233Useless use of unpack in void context at - line 31. 234Useless use of pack in void context at - line 32. 235Useless use of join or string in void context at - line 33. 236Useless use of list slice in void context at - line 34. 237Useless use of sort in void context at - line 37. 238Useless use of reverse in void context at - line 38. 239Useless use of range (or flop) in void context at - line 41. 240Useless use of caller in void context at - line 42. 241Useless use of fileno in void context at - line 43. 242Useless use of eof in void context at - line 44. 243Useless use of tell in void context at - line 45. 244Useless use of readlink in void context at - line 46. 245Useless use of time in void context at - line 47. 246Useless use of localtime in void context at - line 48. 247Useless use of gmtime in void context at - line 49. 248Useless use of getgrnam in void context at - line 50. 249Useless use of getgrgid in void context at - line 51. 250Useless use of getpwnam in void context at - line 52. 251Useless use of getpwuid in void context at - line 53. 252Useless use of subroutine prototype in void context at - line 54. 253######## 254# op.c 255use warnings 'void' ; close STDIN ; 256my $x = sort (2,1,3); 257no warnings 'void' ; 258$x = sort (2,1,3); 259EXPECT 260Useless use of sort in scalar context at - line 3. 261######## 262# op.c 263no warnings 'void' ; close STDIN ; 2641 x 3 ; # OP_REPEAT 265 # OP_GVSV 266wantarray ; # OP_WANTARRAY 267 # OP_GV 268 # OP_PADSV 269 # OP_PADAV 270 # OP_PADHV 271 # OP_PADANY 272 # OP_AV2ARYLEN 273ref ; # OP_REF 274\@a ; # OP_REFGEN 275\$a ; # OP_SREFGEN 276defined $a ; # OP_DEFINED 277hex $a ; # OP_HEX 278oct $a ; # OP_OCT 279length $a ; # OP_LENGTH 280substr $a,1 ; # OP_SUBSTR 281vec $a,1,2 ; # OP_VEC 282index $a,1,2 ; # OP_INDEX 283rindex $a,1,2 ; # OP_RINDEX 284sprintf $a ; # OP_SPRINTF 285$a[0] ; # OP_AELEM 286 # OP_AELEMFAST 287@a[0] ; # OP_ASLICE 288#values %a ; # OP_VALUES 289#keys %a ; # OP_KEYS 290$a{0} ; # OP_HELEM 291@a{0} ; # OP_HSLICE 292unpack "a", "a" ; # OP_UNPACK 293pack $a,"" ; # OP_PACK 294join "" ; # OP_JOIN 295(@a)[0,1] ; # OP_LSLICE 296 # OP_ANONLIST 297 # OP_ANONHASH 298sort(1,2) ; # OP_SORT 299reverse(1,2) ; # OP_REVERSE 300 # OP_RANGE 301 # OP_FLIP 302(1 ..2) ; # OP_FLOP 303caller ; # OP_CALLER 304fileno STDIN ; # OP_FILENO 305eof STDIN ; # OP_EOF 306tell STDIN ; # OP_TELL 307readlink 1; # OP_READLINK 308time ; # OP_TIME 309localtime ; # OP_LOCALTIME 310gmtime ; # OP_GMTIME 311eval { getgrnam 1 }; # OP_GGRNAM 312eval { getgrgid 1 }; # OP_GGRGID 313eval { getpwnam 1 }; # OP_GPWNAM 314eval { getpwuid 1 }; # OP_GPWUID 315prototype "foo"; # OP_PROTOTYPE 316EXPECT 317######## 318# op.c 319use warnings 'void' ; 320for (@{[0]}) { "$_" } # check warning isn't duplicated 321no warnings 'void' ; 322for (@{[0]}) { "$_" } # check warning isn't duplicated 323EXPECT 324Useless use of string in void context at - line 3. 325######## 326# op.c 327use warnings 'void' ; 328use Config ; 329BEGIN { 330 if ( ! $Config{d_telldir}) { 331 print <<EOM ; 332SKIPPED 333# telldir not present 334EOM 335 exit 336 } 337} 338telldir 1 ; # OP_TELLDIR 339no warnings 'void' ; 340telldir 1 ; # OP_TELLDIR 341EXPECT 342Useless use of telldir in void context at - line 13. 343######## 344# op.c 345use warnings 'void' ; 346use Config ; 347BEGIN { 348 if ( ! $Config{d_getppid}) { 349 print <<EOM ; 350SKIPPED 351# getppid not present 352EOM 353 exit 354 } 355} 356getppid ; # OP_GETPPID 357no warnings 'void' ; 358getppid ; # OP_GETPPID 359EXPECT 360Useless use of getppid in void context at - line 13. 361######## 362# op.c 363use warnings 'void' ; 364use Config ; 365BEGIN { 366 if ( ! $Config{d_getpgrp}) { 367 print <<EOM ; 368SKIPPED 369# getpgrp not present 370EOM 371 exit 372 } 373} 374getpgrp ; # OP_GETPGRP 375no warnings 'void' ; 376getpgrp ; # OP_GETPGRP 377EXPECT 378Useless use of getpgrp in void context at - line 13. 379######## 380# op.c 381use warnings 'void' ; 382use Config ; 383BEGIN { 384 if ( ! $Config{d_times}) { 385 print <<EOM ; 386SKIPPED 387# times not present 388EOM 389 exit 390 } 391} 392times ; # OP_TMS 393no warnings 'void' ; 394times ; # OP_TMS 395EXPECT 396Useless use of times in void context at - line 13. 397######## 398# op.c 399use warnings 'void' ; 400use Config ; 401BEGIN { 402 if ( ! $Config{d_getprior} or $^O eq 'os2') { # Locks before fixpak22 403 print <<EOM ; 404SKIPPED 405# getpriority not present 406EOM 407 exit 408 } 409} 410getpriority 1,2; # OP_GETPRIORITY 411no warnings 'void' ; 412getpriority 1,2; # OP_GETPRIORITY 413EXPECT 414Useless use of getpriority in void context at - line 13. 415######## 416# op.c 417use warnings 'void' ; 418use Config ; 419BEGIN { 420 if ( ! $Config{d_getlogin}) { 421 print <<EOM ; 422SKIPPED 423# getlogin not present 424EOM 425 exit 426 } 427} 428getlogin ; # OP_GETLOGIN 429no warnings 'void' ; 430getlogin ; # OP_GETLOGIN 431EXPECT 432Useless use of getlogin in void context at - line 13. 433######## 434# op.c 435use warnings 'void' ; 436use Config ; BEGIN { 437if ( ! $Config{d_socket}) { 438 print <<EOM ; 439SKIPPED 440# getsockname not present 441# getpeername not present 442# gethostbyname not present 443# gethostbyaddr not present 444# gethostent not present 445# getnetbyname not present 446# getnetbyaddr not present 447# getnetent not present 448# getprotobyname not present 449# getprotobynumber not present 450# getprotoent not present 451# getservbyname not present 452# getservbyport not present 453# getservent not present 454EOM 455 exit 456} } 457getsockname STDIN ; # OP_GETSOCKNAME 458getpeername STDIN ; # OP_GETPEERNAME 459gethostbyname 1 ; # OP_GHBYNAME 460gethostbyaddr 1,2; # OP_GHBYADDR 461gethostent ; # OP_GHOSTENT 462getnetbyname 1 ; # OP_GNBYNAME 463getnetbyaddr 1,2 ; # OP_GNBYADDR 464getnetent ; # OP_GNETENT 465getprotobyname 1; # OP_GPBYNAME 466getprotobynumber 1; # OP_GPBYNUMBER 467getprotoent ; # OP_GPROTOENT 468getservbyname 1,2; # OP_GSBYNAME 469getservbyport 1,2; # OP_GSBYPORT 470getservent ; # OP_GSERVENT 471 472no warnings 'void' ; 473getsockname STDIN ; # OP_GETSOCKNAME 474getpeername STDIN ; # OP_GETPEERNAME 475gethostbyname 1 ; # OP_GHBYNAME 476gethostbyaddr 1,2; # OP_GHBYADDR 477gethostent ; # OP_GHOSTENT 478getnetbyname 1 ; # OP_GNBYNAME 479getnetbyaddr 1,2 ; # OP_GNBYADDR 480getnetent ; # OP_GNETENT 481getprotobyname 1; # OP_GPBYNAME 482getprotobynumber 1; # OP_GPBYNUMBER 483getprotoent ; # OP_GPROTOENT 484getservbyname 1,2; # OP_GSBYNAME 485getservbyport 1,2; # OP_GSBYPORT 486getservent ; # OP_GSERVENT 487INIT { 488 # some functions may not be there, so we exit without running 489 exit; 490} 491EXPECT 492Useless use of getsockname in void context at - line 24. 493Useless use of getpeername in void context at - line 25. 494Useless use of gethostbyname in void context at - line 26. 495Useless use of gethostbyaddr in void context at - line 27. 496Useless use of gethostent in void context at - line 28. 497Useless use of getnetbyname in void context at - line 29. 498Useless use of getnetbyaddr in void context at - line 30. 499Useless use of getnetent in void context at - line 31. 500Useless use of getprotobyname in void context at - line 32. 501Useless use of getprotobynumber in void context at - line 33. 502Useless use of getprotoent in void context at - line 34. 503Useless use of getservbyname in void context at - line 35. 504Useless use of getservbyport in void context at - line 36. 505Useless use of getservent in void context at - line 37. 506######## 507# op.c 508use warnings 'void' ; 509*a ; # OP_RV2GV 510$a ; # OP_RV2SV 511@a ; # OP_RV2AV 512%a ; # OP_RV2HV 513no warnings 'void' ; 514*a ; # OP_RV2GV 515$a ; # OP_RV2SV 516@a ; # OP_RV2AV 517%a ; # OP_RV2HV 518EXPECT 519Useless use of a variable in void context at - line 3. 520Useless use of a variable in void context at - line 4. 521Useless use of a variable in void context at - line 5. 522Useless use of a variable in void context at - line 6. 523######## 524# op.c 525use warnings 'void' ; 526"abc"; # OP_CONST 5277 ; # OP_CONST 5285 || print "bad\n"; # test OPpCONST_SHORTCIRCUIT 529use constant U => undef; 530print "boo\n" if U; # test OPpCONST_SHORTCIRCUIT 531$[ = 2; # should not warn 532no warnings 'void' ; 533"abc"; # OP_CONST 5347 ; # OP_CONST 535EXPECT 536Useless use of a constant in void context at - line 3. 537Useless use of a constant in void context at - line 4. 538######## 539# op.c 540# 541use warnings 'misc' ; 542my $a ; my @a = () ; my %a = () ; my $b = \@a ; my $c = \%a ; 543@a =~ /abc/ ; 544@a =~ s/a/b/ ; 545@a =~ tr/a/b/ ; 546@$b =~ /abc/ ; 547@$b =~ s/a/b/ ; 548@$b =~ tr/a/b/ ; 549%a =~ /abc/ ; 550%a =~ s/a/b/ ; 551%a =~ tr/a/b/ ; 552%$c =~ /abc/ ; 553%$c =~ s/a/b/ ; 554%$c =~ tr/a/b/ ; 555{ 556no warnings 'misc' ; 557my $a ; my @a = () ; my %a = () ; my $b = \@a ; my $c = \%a ; 558@a =~ /abc/ ; 559@a =~ s/a/b/ ; 560@a =~ tr/a/b/ ; 561@$b =~ /abc/ ; 562@$b =~ s/a/b/ ; 563@$b =~ tr/a/b/ ; 564%a =~ /abc/ ; 565%a =~ s/a/b/ ; 566%a =~ tr/a/b/ ; 567%$c =~ /abc/ ; 568%$c =~ s/a/b/ ; 569%$c =~ tr/a/b/ ; 570} 571EXPECT 572Applying pattern match (m//) to @array will act on scalar(@array) at - line 5. 573Applying substitution (s///) to @array will act on scalar(@array) at - line 6. 574Applying transliteration (tr///) to @array will act on scalar(@array) at - line 7. 575Applying pattern match (m//) to @array will act on scalar(@array) at - line 8. 576Applying substitution (s///) to @array will act on scalar(@array) at - line 9. 577Applying transliteration (tr///) to @array will act on scalar(@array) at - line 10. 578Applying pattern match (m//) to %hash will act on scalar(%hash) at - line 11. 579Applying substitution (s///) to %hash will act on scalar(%hash) at - line 12. 580Applying transliteration (tr///) to %hash will act on scalar(%hash) at - line 13. 581Applying pattern match (m//) to %hash will act on scalar(%hash) at - line 14. 582Applying substitution (s///) to %hash will act on scalar(%hash) at - line 15. 583Applying transliteration (tr///) to %hash will act on scalar(%hash) at - line 16. 584Can't modify private array in substitution (s///) at - line 6, near "s/a/b/ ;" 585BEGIN not safe after errors--compilation aborted at - line 18. 586######## 587# op.c 588use warnings 'parenthesis' ; 589my $a, $b = (1,2); 590my @foo,%bar, $quux; # there's a TAB here 591my $x, $y or print; 592no warnings 'parenthesis' ; 593my $c, $d = (1,2); 594EXPECT 595Parentheses missing around "my" list at - line 3. 596Parentheses missing around "my" list at - line 4. 597######## 598# op.c 599use warnings 'parenthesis' ; 600our $a, $b = (1,2); 601no warnings 'parenthesis' ; 602our $c, $d = (1,2); 603EXPECT 604Parentheses missing around "our" list at - line 3. 605######## 606# op.c 607use warnings 'parenthesis' ; 608local $a, $b = (1,2); 609local *f, *g; 610no warnings 'parenthesis' ; 611local $c, $d = (1,2); 612EXPECT 613Parentheses missing around "local" list at - line 3. 614Parentheses missing around "local" list at - line 4. 615######## 616# op.c 617use warnings 'bareword' ; 618print (ABC || 1) ; 619no warnings 'bareword' ; 620print (ABC || 1) ; 621EXPECT 622Bareword found in conditional at - line 3. 623######## 624--FILE-- abc 625 626--FILE-- 627# op.c 628use warnings 'misc' ; 629open FH, "<abc" ; 630$x = 1 if $x = <FH> ; 631no warnings 'misc' ; 632$x = 1 if $x = <FH> ; 633EXPECT 634Value of <HANDLE> construct can be "0"; test with defined() at - line 4. 635######## 636# op.c 637use warnings 'misc' ; 638opendir FH, "." ; 639$x = 1 if $x = readdir FH ; 640no warnings 'misc' ; 641$x = 1 if $x = readdir FH ; 642closedir FH ; 643EXPECT 644Value of readdir() operator can be "0"; test with defined() at - line 4. 645######## 646# op.c 647use warnings 'misc' ; 648$x = 1 if $x = <*> ; 649no warnings 'misc' ; 650$x = 1 if $x = <*> ; 651EXPECT 652Value of glob construct can be "0"; test with defined() at - line 3. 653######## 654# op.c 655use warnings 'misc' ; 656%a = (1,2,3,4) ; 657$x = 1 if $x = each %a ; 658no warnings 'misc' ; 659$x = 1 if $x = each %a ; 660EXPECT 661Value of each() operator can be "0"; test with defined() at - line 4. 662######## 663# op.c 664use warnings 'misc' ; 665$x = 1 while $x = <*> and 0 ; 666no warnings 'misc' ; 667$x = 1 while $x = <*> and 0 ; 668EXPECT 669Value of glob construct can be "0"; test with defined() at - line 3. 670######## 671# op.c 672use warnings 'misc' ; 673opendir FH, "." ; 674$x = 1 while $x = readdir FH and 0 ; 675no warnings 'misc' ; 676$x = 1 while $x = readdir FH and 0 ; 677closedir FH ; 678EXPECT 679Value of readdir() operator can be "0"; test with defined() at - line 4. 680######## 681# op.c 682use warnings 'misc'; 683open FH, "<abc"; 684($_ = <FH>) // ($_ = 1); 685opendir DH, "."; 686%a = (1,2,3,4) ; 687EXPECT 688######## 689# op.c 690use warnings 'redefine' ; 691sub fred {} 692sub fred {} 693no warnings 'redefine' ; 694sub fred {} 695EXPECT 696Subroutine fred redefined at - line 4. 697######## 698# op.c 699use warnings 'redefine' ; 700sub fred () { 1 } 701sub fred () { 1 } 702no warnings 'redefine' ; 703sub fred () { 1 } 704EXPECT 705Constant subroutine fred redefined at - line 4. 706######## 707# op.c 708no warnings 'redefine' ; 709sub fred () { 1 } 710sub fred () { 2 } 711EXPECT 712Constant subroutine fred redefined at - line 4. 713######## 714# op.c 715no warnings 'redefine' ; 716sub fred () { 1 } 717*fred = sub () { 2 }; 718EXPECT 719Constant subroutine main::fred redefined at - line 4. 720######## 721# op.c 722use warnings 'redefine' ; 723format FRED = 724. 725format FRED = 726. 727no warnings 'redefine' ; 728format FRED = 729. 730EXPECT 731Format FRED redefined at - line 5. 732######## 733# op.c 734use warnings 'deprecated' ; 735push FRED; 736no warnings 'deprecated' ; 737push FRED; 738EXPECT 739Array @FRED missing the @ in argument 1 of push() at - line 3. 740######## 741# op.c 742use warnings 'deprecated' ; 743@a = keys FRED ; 744no warnings 'deprecated' ; 745@a = keys FRED ; 746EXPECT 747Hash %FRED missing the % in argument 1 of keys() at - line 3. 748######## 749# op.c 750BEGIN { 751 if ($^O eq 'MacOS') { 752 print <<EOM; 753SKIPPED 754# no exec on Mac OS 755EOM 756 exit; 757 } 758} 759use warnings 'syntax' ; 760exec "$^X -e 1" ; 761my $a 762EXPECT 763Statement unlikely to be reached at - line 13. 764 (Maybe you meant system() when you said exec()?) 765######## 766# op.c 767use warnings 'deprecated' ; 768my @a; defined(@a); 769EXPECT 770defined(@array) is deprecated at - line 3. 771 (Maybe you should just omit the defined()?) 772######## 773# op.c 774use warnings 'deprecated' ; 775defined(@a = (1,2,3)); 776EXPECT 777defined(@array) is deprecated at - line 3. 778 (Maybe you should just omit the defined()?) 779######## 780# op.c 781use warnings 'deprecated' ; 782my %h; defined(%h); 783EXPECT 784defined(%hash) is deprecated at - line 3. 785 (Maybe you should just omit the defined()?) 786######## 787# op.c 788BEGIN { 789 if ($^O eq 'MacOS') { 790 print <<EOM; 791SKIPPED 792# no exec on Mac OS 793EOM 794 exit; 795 } 796} 797no warnings 'syntax' ; 798exec "$^X -e 1" ; 799my $a 800EXPECT 801 802######## 803# op.c 804sub fred(); 805sub fred($) {} 806EXPECT 807Prototype mismatch: sub main::fred () vs ($) at - line 3. 808######## 809# op.c 810$^W = 0 ; 811sub fred() ; 812sub fred($) {} 813{ 814 no warnings 'prototype' ; 815 sub Fred() ; 816 sub Fred($) {} 817 use warnings 'prototype' ; 818 sub freD() ; 819 sub freD($) {} 820} 821sub FRED() ; 822sub FRED($) {} 823EXPECT 824Prototype mismatch: sub main::fred () vs ($) at - line 4. 825Prototype mismatch: sub main::freD () vs ($) at - line 11. 826Prototype mismatch: sub main::FRED () vs ($) at - line 14. 827######## 828# op.c 829use warnings 'syntax' ; 830join /---/, 'x', 'y', 'z'; 831EXPECT 832/---/ should probably be written as "---" at - line 3. 833######## 834# op.c [Perl_peep] 835use warnings 'prototype' ; 836fred() ; 837sub fred ($$) {} 838no warnings 'prototype' ; 839joe() ; 840sub joe ($$) {} 841EXPECT 842main::fred() called too early to check prototype at - line 3. 843######## 844# op.c [Perl_newATTRSUB] 845--FILE-- abc.pm 846use warnings 'void' ; 847BEGIN { $| = 1; print "in begin\n"; } 848CHECK { print "in check\n"; } 849INIT { print "in init\n"; } 850END { print "in end\n"; } 851print "in mainline\n"; 8521; 853--FILE-- 854use abc; 855delete $INC{"abc.pm"}; 856require abc; 857do "abc.pm"; 858EXPECT 859in begin 860in mainline 861in check 862in init 863in begin 864Too late to run CHECK block at abc.pm line 3. 865Too late to run INIT block at abc.pm line 4. 866in mainline 867in begin 868Too late to run CHECK block at abc.pm line 3. 869Too late to run INIT block at abc.pm line 4. 870in mainline 871in end 872in end 873in end 874######## 875# op.c [Perl_newATTRSUB] 876--FILE-- abc.pm 877no warnings 'void' ; 878BEGIN { $| = 1; print "in begin\n"; } 879CHECK { print "in check\n"; } 880INIT { print "in init\n"; } 881END { print "in end\n"; } 882print "in mainline\n"; 8831; 884--FILE-- 885require abc; 886do "abc.pm"; 887EXPECT 888in begin 889in mainline 890in begin 891in mainline 892in end 893in end 894######## 895# op.c 896my @x; 897use warnings 'syntax' ; 898push(@x); 899unshift(@x); 900no warnings 'syntax' ; 901push(@x); 902unshift(@x); 903EXPECT 904Useless use of push with no values at - line 4. 905Useless use of unshift with no values at - line 5. 906######## 907# op.c 908# 20020401 mjd@plover.com at suggestion of jfriedl@yahoo.com 909use warnings 'regexp'; 910split /blah/g, "blah"; 911no warnings 'regexp'; 912split /blah/g, "blah"; 913EXPECT 914Use of /g modifier is meaningless in split at - line 4. 915######## 916# op.c 917use warnings 'precedence'; 918$a = $b & $c == $d; 919$a = $b ^ $c != $d; 920$a = $b | $c > $d; 921$a = $b < $c & $d; 922$a = $b >= $c ^ $d; 923$a = $b <= $c | $d; 924$a = $b <=> $c & $d; 925$a &= $b == $c; $a |= $b == $c; $a ^= $b == $c; # shouldn't warn 926no warnings 'precedence'; 927$a = $b & $c == $d; 928$a = $b ^ $c != $d; 929$a = $b | $c > $d; 930$a = $b < $c & $d; 931$a = $b >= $c ^ $d; 932$a = $b <= $c | $d; 933$a = $b <=> $c & $d; 934EXPECT 935Possible precedence problem on bitwise & operator at - line 3. 936Possible precedence problem on bitwise ^ operator at - line 4. 937Possible precedence problem on bitwise | operator at - line 5. 938Possible precedence problem on bitwise & operator at - line 6. 939Possible precedence problem on bitwise ^ operator at - line 7. 940Possible precedence problem on bitwise | operator at - line 8. 941Possible precedence problem on bitwise & operator at - line 9. 942######## 943# op.c 944use integer; 945use warnings 'precedence'; 946$a = $b & $c == $d; 947$a = $b ^ $c != $d; 948$a = $b | $c > $d; 949$a = $b < $c & $d; 950$a = $b >= $c ^ $d; 951$a = $b <= $c | $d; 952$a = $b <=> $c & $d; 953no warnings 'precedence'; 954$a = $b & $c == $d; 955$a = $b ^ $c != $d; 956$a = $b | $c > $d; 957$a = $b < $c & $d; 958$a = $b >= $c ^ $d; 959$a = $b <= $c | $d; 960$a = $b <=> $c & $d; 961EXPECT 962Possible precedence problem on bitwise & operator at - line 4. 963Possible precedence problem on bitwise ^ operator at - line 5. 964Possible precedence problem on bitwise | operator at - line 6. 965Possible precedence problem on bitwise & operator at - line 7. 966Possible precedence problem on bitwise ^ operator at - line 8. 967Possible precedence problem on bitwise | operator at - line 9. 968Possible precedence problem on bitwise & operator at - line 10. 969######## 970# op.c 971 972# ok => local() has desired effect; 973# ignore=> local() silently ignored 974 975use warnings 'syntax'; 976 977local(undef); # OP_UNDEF ignore 978sub lval : lvalue {}; 979local(lval()); # OP_ENTERSUB 980local($x **= 1); # OP_POW 981local($x *= 1); # OP_MULTIPLY 982local($x /= 1); # OP_DIVIDE 983local($x %= 1); # OP_MODULO 984local($x x= 1); # OP_REPEAT 985local($x += 1); # OP_ADD 986local($x -= 1); # OP_SUBTRACT 987local($x .= 1); # OP_CONCAT 988local($x <<= 1); # OP_LEFT_SHIFT 989local($x >>= 1); # OP_RIGHT_SHIFT 990local($x &= 1); # OP_BIT_AND 991local($x ^= 1); # OP_BIT_XOR 992local($x |= 1); # OP_BIT_OR 993{ 994 use integer; 995 local($x *= 1); # OP_I_MULTIPLY 996 local($x /= 1); # OP_I_DIVIDE 997 local($x %= 1); # OP_I_MODULO 998 local($x += 1); # OP_I_ADD 999 local($x -= 1); # OP_I_SUBTRACT 1000} 1001local($x?$y:$z) = 1; # OP_COND_EXPR ok 1002# these two are fatal run-time errors instead 1003#local(@$a); # OP_RV2AV ok 1004#local(%$a); # OP_RV2HV ok 1005local(*a); # OP_RV2GV ok 1006local(@a[1,2]); # OP_ASLICE ok 1007local(@a{1,2}); # OP_HSLICE ok 1008local(@a = (1,2)); # OP_AASSIGN 1009local($$x); # OP_RV2SV ok 1010local($#a); # OP_AV2ARYLEN 1011local($x = 1); # OP_SASSIGN 1012local($x &&= 1); # OP_ANDASSIGN 1013local($x ||= 1); # OP_ORASSIGN 1014local($x //= 1); # OP_DORASSIGN 1015local($a[0]); # OP_AELEMFAST ok 1016 1017local(substr($x,0,1)); # OP_SUBSTR 1018local(pos($x)); # OP_POS 1019local(vec($x,0,1)); # OP_VEC 1020local($a[$b]); # OP_AELEM ok 1021local($a{$b}); # OP_HELEM ok 1022local($[); # OP_CONST 1023 1024no warnings 'syntax'; 1025EXPECT 1026Useless localization of subroutine entry at - line 10. 1027Useless localization of exponentiation (**) at - line 11. 1028Useless localization of multiplication (*) at - line 12. 1029Useless localization of division (/) at - line 13. 1030Useless localization of modulus (%) at - line 14. 1031Useless localization of repeat (x) at - line 15. 1032Useless localization of addition (+) at - line 16. 1033Useless localization of subtraction (-) at - line 17. 1034Useless localization of concatenation (.) or string at - line 18. 1035Useless localization of left bitshift (<<) at - line 19. 1036Useless localization of right bitshift (>>) at - line 20. 1037Useless localization of bitwise and (&) at - line 21. 1038Useless localization of bitwise xor (^) at - line 22. 1039Useless localization of bitwise or (|) at - line 23. 1040Useless localization of integer multiplication (*) at - line 26. 1041Useless localization of integer division (/) at - line 27. 1042Useless localization of integer modulus (%) at - line 28. 1043Useless localization of integer addition (+) at - line 29. 1044Useless localization of integer subtraction (-) at - line 30. 1045Useless localization of list assignment at - line 39. 1046Useless localization of array length at - line 41. 1047Useless localization of scalar assignment at - line 42. 1048Useless localization of logical and assignment (&&=) at - line 43. 1049Useless localization of logical or assignment (||=) at - line 44. 1050Useless localization of defined or assignment (//=) at - line 45. 1051Useless localization of substr at - line 48. 1052Useless localization of match position at - line 49. 1053Useless localization of vec at - line 50. 1054######## 1055# op.c 1056use warnings 'deprecated'; 1057my $x1 if 0; 1058my @x2 if 0; 1059my %x3 if 0; 1060my ($x4) if 0; 1061my ($x5,@x6, %x7) if 0; 10620 && my $z1; 10630 && my (%z2); 1064# these shouldn't warn 1065our $x if 0; 1066our $x unless 0; 1067if (0) { my $w1 } 1068if (my $w2) { $a=1 } 1069if ($a && (my $w3 = 1)) {$a = 2} 1070 1071EXPECT 1072Deprecated use of my() in false conditional at - line 3. 1073Deprecated use of my() in false conditional at - line 4. 1074Deprecated use of my() in false conditional at - line 5. 1075Deprecated use of my() in false conditional at - line 6. 1076Deprecated use of my() in false conditional at - line 7. 1077Deprecated use of my() in false conditional at - line 8. 1078Deprecated use of my() in false conditional at - line 9. 1079