1Check warnings::enabled, warnings::warn and other functionality of 2warnings.pm. 3 4__END__ 5 6--FILE-- abc0.pm 7package abc0 ; 8use warnings "io" ; 9print "ok1\n" if ! warnings::enabled('all') ; 10print "ok2\n" if ! warnings::enabled("io") ; 111; 12--FILE-- 13no warnings; 14use abc0 ; 15EXPECT 16ok1 17ok2 18######## 19 20--FILE-- abc1.pm 21package abc1 ; 22no warnings ; 23print "ok1\n" if !warnings::enabled('all') ; 24print "ok2\n" if warnings::enabled("syntax") ; 251; 26--FILE-- 27use warnings 'syntax' ; 28use abc1 ; 29EXPECT 30ok1 31ok2 32######## 33 34--FILE-- abc2.pm 35package abc2 ; 36use warnings 'syntax' ; 37print "ok1\n" if warnings::enabled('io') ; 38print "ok2\n" if ! warnings::enabled("syntax") ; 391; 40--FILE-- 41use warnings 'io' ; 42use abc2 ; 43EXPECT 44ok1 45ok2 46######## 47 48--FILE-- abc3 49no warnings ; 50print "ok1\n" if !warnings::enabled('all') ; 51print "ok2\n" if !warnings::enabled("syntax") ; 521; 53--FILE-- 54use warnings 'syntax' ; 55require "abc3" ; 56EXPECT 57ok1 58ok2 59######## 60 61--FILE-- abc4 62use warnings 'syntax' ; 63print "ok1\n" if ! warnings::enabled('all') ; 64print "ok2\n" if ! warnings::enabled("syntax") ; 65print "ok3\n" if ! warnings::enabled("io") ; 661; 67--FILE-- 68use warnings 'io' ; 69require "abc4" ; 70EXPECT 71ok1 72ok2 73ok3 74######## 75 76--FILE-- abc5.pm 77package abc5 ; 78no warnings ; 79sub check { 80 print "ok1\n" if !warnings::enabled('all') ; 81 print "ok2\n" if warnings::enabled("syntax") ; 82} 831; 84--FILE-- 85use warnings 'syntax' ; 86use abc5 ; 87abc5::check() ; 88EXPECT 89ok1 90ok2 91######## 92 93--FILE-- abc6.pm 94package abc6 ; 95use warnings 'io' ; 96sub check { 97 print "ok1\n" if ! warnings::enabled('all') ; 98 print "ok2\n" if warnings::enabled("syntax") ; 99 print "ok3\n" if ! warnings::enabled("io") ; 100} 1011; 102--FILE-- 103use warnings 'syntax' ; 104use abc6 ; 105abc6::check() ; 106EXPECT 107ok1 108ok2 109ok3 110######## 111 112--FILE-- abc7 113package abc7 ; 114no warnings ; 115sub check { 116 print "ok1\n" if !warnings::enabled('all') ; 117 print "ok2\n" if warnings::enabled("syntax") ; 118} 1191; 120--FILE-- 121use warnings 'syntax' ; 122require "abc7" ; 123abc7::check() ; 124EXPECT 125ok1 126ok2 127######## 128 129--FILE-- abc8 130package abc8 ; 131use warnings 'io' ; 132sub check { 133 print "ok1\n" if ! warnings::enabled('all') ; 134 print "ok2\n" if warnings::enabled("syntax") ; 135 print "ok3\n" if ! warnings::enabled("io") ; 136} 1371; 138--FILE-- 139use warnings 'syntax' ; 140require "abc8" ; 141abc8::check() ; 142EXPECT 143ok1 144ok2 145ok3 146######## 147 148--FILE-- abc9.pm 149package abc9 ; 150use warnings "io" ; 151print "ok1\n" if ! warnings::enabled('all') ; 152print "ok2\n" if ! warnings::enabled("io") ; 1531; 154--FILE-- def.pm 155package def; 156no warnings; 157use abc9 ; 1581; 159--FILE-- 160use warnings; 161use def ; 162EXPECT 163ok1 164ok2 165######## 166 167--FILE-- abc10.pm 168package abc10 ; 169no warnings ; 170print "ok1\n" if ! warnings::enabled('all') ; 171print "ok2\n" if warnings::enabled("syntax") ; 172print "ok3\n" if !warnings::enabled("io") ; 1731; 174--FILE-- def.pm 175use warnings 'syntax' ; 176print "ok4\n" if !warnings::enabled('all') ; 177print "ok5\n" if !warnings::enabled("io") ; 178use abc10 ; 1791; 180--FILE-- 181use warnings 'io' ; 182use def ; 183EXPECT 184ok1 185ok2 186ok3 187ok4 188ok5 189######## 190 191--FILE-- abc11.pm 192package abc11 ; 193no warnings ; 194sub check { 195 print "ok1\n" if !warnings::enabled('all') ; 196 print "ok2\n" if warnings::enabled("syntax") ; 197} 1981; 199--FILE-- 200use warnings 'syntax' ; 201use abc11 ; 202eval { 203 abc11::check() ; 204}; 205print $@ ; 206EXPECT 207ok1 208ok2 209######## 210 211--FILE-- abc12.pm 212package abc12 ; 213use warnings 'io' ; 214sub check { 215 print "ok1\n" if ! warnings::enabled('all') ; 216 print "ok2\n" if warnings::enabled("syntax") ; 217 print "ok3\n" if ! warnings::enabled("io") ; 218} 2191; 220--FILE-- 221use warnings 'syntax' ; 222use abc12 ; 223eval { 224 abc12::check() ; 225 } ; 226print $@ ; 227EXPECT 228ok1 229ok2 230ok3 231######## 232 233--FILE-- abc13 234package abc13 ; 235no warnings ; 236sub check { 237 print "ok1\n" if !warnings::enabled('all') ; 238 print "ok2\n" if warnings::enabled("syntax") ; 239} 2401; 241--FILE-- 242use warnings 'syntax' ; 243require "abc13" ; 244eval { 245 abc13::check() ; 246 } ; 247print $@ ; 248EXPECT 249ok1 250ok2 251######## 252 253--FILE-- abc14 254package abc14 ; 255use warnings 'io' ; 256sub check { 257 print "ok1\n" if !warnings::enabled('all') ; 258 print "ok2\n" if warnings::enabled("syntax") ; 259 print "ok3\n" if warnings::enabled("io") ; 260} 2611; 262--FILE-- 263use warnings 'syntax' ; 264require "abc14" ; 265eval { 266 use warnings 'io' ; 267 abc14::check() ; 268}; 269abc14::check() ; 270print $@ ; 271EXPECT 272ok1 273ok2 274ok3 275ok1 276ok2 277######## 278 279--FILE-- abc15.pm 280package abc15 ; 281use warnings 'io' ; 282sub check { 283 print "ok1\n" if ! warnings::enabled('all') ; 284 print "ok2\n" if warnings::enabled("syntax") ; 285 print "ok3\n" if ! warnings::enabled("io") ; 286} 2871; 288--FILE-- 289use warnings 'syntax' ; 290use abc15 ; 291sub fred { abc15::check() } 292fred() ; 293EXPECT 294ok1 295ok2 296ok3 297######## 298 299--FILE-- abc16.pm 300package abc16 ; 301use warnings 'io' ; 302sub check { 303 print "ok1\n" if ! warnings::enabled('all') ; 304} 3051; 306--FILE-- 307use warnings 'syntax' ; 308use abc16 ; 309sub fred { no warnings ; abc16::check() } 310fred() ; 311EXPECT 312ok1 313######## 314 315--FILE-- abc17.pm 316package abc17 ; 317use warnings 'misc' ; 318sub check { 319 print "ok1\n" if ! warnings::enabled('all') ; 320 print "ok2\n" if warnings::enabled("syntax") ; 321 print "ok3\n" if warnings::enabled("io") ; 322 print "ok4\n" if ! warnings::enabled("misc") ; 323} 3241; 325--FILE-- 326use warnings 'syntax' ; 327use abc17 ; 328sub fred { use warnings 'io' ; abc17::check() } 329fred() ; 330EXPECT 331ok1 332ok2 333ok3 334ok4 335######## 336 337# check warnings::warn 338use warnings ; 339eval { 340 warnings::warn() 341 } ; 342print $@ ; 343eval { 344 warnings::warn("fred", "joe") 345 } ; 346print $@ ; 347EXPECT 348Usage: warnings::warn([category,] 'message') at - line 5. 349Unknown warnings category 'fred' at - line 9. 350######## 351 352# check warnings::warnif 353use warnings ; 354eval { 355 warnings::warnif() 356} ; 357print $@ ; 358eval { 359 warnings::warnif("fred", "joe") 360} ; 361print $@ ; 362EXPECT 363Usage: warnings::warnif([category,] 'message') at - line 5. 364Unknown warnings category 'fred' at - line 9. 365######## 366 367--FILE-- abc18.pm 368package abc18 ; 369use warnings 'misc' ; 370sub check { warnings::warn("io", "hello") } 3711; 372--FILE-- 373use warnings "io" ; 374use abc18; 375abc18::check() ; 376EXPECT 377hello at - line 3. 378######## 379 380--FILE-- abc19.pm 381package abc19 ; 382use warnings 'misc' ; 383sub check { warnings::warn("misc", "hello") } 3841; 385--FILE-- 386use warnings "io" ; 387use abc19; 388abc19::check() ; 389EXPECT 390hello at - line 3. 391######## 392 393--FILE-- abc20.pm 394package abc20 ; 395use warnings 'misc' ; 396sub check { warnings::warn("io", "hello") } 3971; 398--FILE-- 399use warnings qw( FATAL deprecated ) ; 400use abc20; 401eval { 402 abc20::check() ; 403 } ; 404print "[[$@]]\n"; 405EXPECT 406hello at - line 4. 407[[]] 408######## 409 410--FILE-- abc21.pm 411package abc21 ; 412use warnings 'misc' ; 413sub check { warnings::warn("io", "hello") } 4141; 415--FILE-- 416use warnings qw( FATAL io ) ; 417use abc21; 418eval { 419 abc21::check() ; 420} ; 421print "[[$@]]\n"; 422EXPECT 423[[hello at - line 4. 424]] 425######## 426-W 427--FILE-- abc22.pm 428package abc22 ; 429use warnings "io" ; 430print "ok1\n" if warnings::enabled("io") ; 431print "ok2\n" if warnings::enabled("all") ; 4321; 433--FILE-- 434no warnings; 435use abc22 ; 436EXPECT 437ok1 438ok2 439######## 440-X 441--FILE-- abc23.pm 442package abc23 ; 443use warnings "io" ; 444print "ok1\n" if !warnings::enabled("io") ; 445print "ok2\n" if !warnings::enabled("all") ; 4461; 447--FILE-- 448use warnings; 449use abc23 ; 450EXPECT 451ok1 452ok2 453######## 454 455--FILE-- abc24.pm 456package abc24 ; 457no warnings ; 458sub check { 459 print "ok\n" if ! warnings::enabled() ; 460} 4611; 462--FILE-- 463use warnings 'syntax' ; 464use abc24 ; 465abc24::check() ; 466EXPECT 467package 'abc24' not registered for warnings at abc24.pm line 4. 468######## 469 470--FILE-- abc25.pm 471package abc25 ; 472no warnings ; 473sub check { 474 warnings::warn("fred") ; 475} 4761; 477--FILE-- 478use warnings 'syntax' ; 479use abc25 ; 480abc25::check() ; 481EXPECT 482package 'abc25' not registered for warnings at abc25.pm line 4. 483######## 484 485--FILE-- abc26.pm 486package abc26 ; 487no warnings ; 488sub check { 489 warnings::warnif("fred") ; 490} 4911; 492--FILE-- 493use warnings 'syntax' ; 494use abc26 ; 495abc26::check() ; 496EXPECT 497package 'abc26' not registered for warnings at abc26.pm line 4. 498######## 499 500--FILE-- abc27.pm 501package abc27 ; 502use warnings 'io' ; 503use warnings::register ; 504sub check { 505 print "ok1\n" if warnings::enabled ; 506 print "ok2\n" if warnings::enabled("syntax") ; 507 print "ok3\n" if !warnings::enabled("io") ; 508} 5091; 510--FILE-- 511use warnings 'syntax' ; 512use abc27 ; 513use warnings 'abc27' ; 514abc27::check() ; 515EXPECT 516ok1 517ok2 518ok3 519######## 520 521--FILE-- abc28.pm 522package abc28 ; 523use warnings 'io' ; 524use warnings::register ; 525sub check { 526 print "ok1\n" if !warnings::enabled ; 527 print "ok2\n" if warnings::enabled("syntax") ; 528 print "ok3\n" if !warnings::enabled("io") ; 529} 5301; 531--FILE-- 532use warnings 'syntax' ; 533use abc28 ; 534abc28::check() ; 535EXPECT 536ok1 537ok2 538ok3 539######## 540 541--FILE-- abc29.pm 542package abc29 ; 543no warnings ; 544use warnings::register ; 545sub check { 546 print "ok1\n" if warnings::enabled ; 547 print "ok2\n" if warnings::enabled("syntax") ; 548} 5491; 550--FILE-- 551use warnings 'syntax' ; 552use abc29 ; 553use warnings 'abc29' ; 554eval { abc29::check() ; }; 555print $@ ; 556EXPECT 557ok1 558ok2 559######## 560 561--FILE-- abc30.pm 562package abc30 ; 563use warnings 'io' ; 564use warnings::register ; 565sub check { 566 print "ok1\n" if !warnings::enabled ; 567 print "ok2\n" if warnings::enabled("syntax") ; 568 print "ok3\n" if !warnings::enabled("io") ; 569} 5701; 571--FILE-- 572use warnings 'syntax' ; 573use abc30 ; 574eval { abc30::check() ; } ; 575print $@ ; 576EXPECT 577ok1 578ok2 579ok3 580######## 581 582--FILE-- abc31.pm 583package abc31 ; 584use warnings 'io' ; 585use warnings::register ; 586sub check { 587 print "ok1\n" if warnings::enabled ; 588 print "ok2\n" if warnings::enabled("syntax") ; 589 print "ok3\n" if !warnings::enabled("io") ; 590} 5911; 592--FILE-- 593use warnings 'syntax' ; 594use abc31 ; 595use warnings 'abc31' ; 596sub fred { abc31::check() } 597fred() ; 598EXPECT 599ok1 600ok2 601ok3 602######## 603 604--FILE-- abc32.pm 605package abc32 ; 606use warnings 'io' ; 607use warnings::register ; 608sub check { 609 print "ok1\n" if ! warnings::enabled ; 610} 6111; 612--FILE-- 613use warnings 'syntax' ; 614use abc32 ; 615sub fred { no warnings ; abc32::check() } 616fred() ; 617EXPECT 618ok1 619######## 620 621--FILE-- abc33.pm 622package abc33 ; 623use warnings 'misc' ; 624use warnings::register; 625sub check { 626 print "ok1\n" if warnings::enabled ; 627 print "ok2\n" if warnings::enabled("syntax") ; 628 print "ok3\n" if warnings::enabled("io") ; 629 print "ok4\n" if ! warnings::enabled("misc") ; 630} 6311; 632--FILE-- 633use warnings 'syntax' ; 634use abc33 ; 635use warnings 'abc33' ; 636sub fred { use warnings 'io' ; abc33::check() } 637fred() ; 638EXPECT 639ok1 640ok2 641ok3 642ok4 643######## 644 645--FILE-- abc34.pm 646package abc34 ; 647use warnings 'misc' ; 648use warnings::register; 649sub check { warnings::warn("hello") } 6501; 651--FILE-- 652use abc34; 653use warnings "abc34" ; 654abc34::check() ; 655EXPECT 656hello at - line 3. 657######## 658 659--FILE-- abc35.pm 660package abc35 ; 661use warnings::register; 662sub check { warnings::warn("hello") } 6631; 664--FILE-- 665use abc35; 666abc35::check() ; 667EXPECT 668hello at - line 2. 669######## 670 671--FILE-- abc36.pm 672package abc36 ; 673use warnings::register ; 674sub check { warnings::warn("hello") } 6751; 676--FILE-- 677use abc36; 678use warnings qw( FATAL deprecated ) ; 679eval { 680 abc36::check() ; 681 } ; 682print "[[$@]]\n"; 683EXPECT 684hello at - line 4. 685[[]] 686######## 687 688--FILE-- abc37.pm 689package abc37 ; 690use warnings::register ; 691sub check { warnings::warn("hello") } 6921; 693--FILE-- 694use abc37; 695use warnings qw( FATAL abc37 ) ; 696eval { 697 abc37::check() ; 698 } ; 699print "[[$@]]\n"; 700EXPECT 701[[hello at - line 4. 702]] 703######## 704-W 705--FILE-- abc38.pm 706package abc38 ; 707use warnings "io" ; 708use warnings::register ; 709sub check { 710 print "ok1\n" if warnings::enabled() ; 711 print "ok2\n" if warnings::enabled("io") ; 712 print "ok3\n" if warnings::enabled("all") ; 713} 7141; 715--FILE-- 716no warnings; 717use abc38 ; 718abc38::check() ; 719EXPECT 720ok1 721ok2 722ok3 723######## 724-X 725--FILE-- abc39.pm 726package abc39 ; 727use warnings "io" ; 728use warnings::register ; 729sub check { 730 print "ok1\n" if !warnings::enabled() ; 731 print "ok2\n" if !warnings::enabled("io") ; 732 print "ok3\n" if !warnings::enabled("all") ; 733} 7341; 735--FILE-- 736no warnings; 737use abc39 ; 738abc39::check() ; 739EXPECT 740ok1 741ok2 742ok3 743######## 744 745--FILE-- abc40.pm 746package abc40 ; 747use warnings "io" ; 748use warnings::register ; 749sub check { 750 print "ok1\n" if warnings::enabled() ; 751 print "ok2\n" if warnings::enabled("io") ; 752 print "ok3\n" if warnings::enabled("all") ; 753} 7541; 755--FILE-- 756use warnings 'all'; 757use abc40 ; 758abc40::check() ; 759EXPECT 760ok1 761ok2 762ok3 763######## 764 765--FILE-- abc41.pm 766package abc41 ; 767use warnings "io" ; 768use warnings::register ; 769sub check { 770 print "ok1\n" if !warnings::enabled() ; 771 print "ok2\n" if !warnings::enabled("io") ; 772 print "ok3\n" if !warnings::enabled("all") ; 773} 7741; 775--FILE-- 776use abc41 ; 777no warnings ; 778abc41::check() ; 779EXPECT 780ok1 781ok2 782ok3 783######## 784 785--FILE-- abc42.pm 786package abc42 ; 787use warnings "io" ; 788use warnings::register ; 789sub check { 790 print "ok1\n" if !warnings::enabled() ; 791 print "ok2\n" if !warnings::enabled("io") ; 792 print "ok3\n" if !warnings::enabled("all") ; 793 warnings::warnif("my message 1") ; 794 warnings::warnif('abc42', "my message 2") ; 795 warnings::warnif('io', "my message 3") ; 796 warnings::warnif('all', "my message 4") ; 797} 7981; 799--FILE-- 800use abc42 ; 801use warnings 'abc42'; 802no warnings ; 803abc42::check() ; 804EXPECT 805ok1 806ok2 807ok3 808######## 809 810--FILE-- abc43.pm 811package abc43 ; 812use warnings "io" ; 813use warnings::register ; 814sub check { 815 print "abc43 self" . (warnings::enabled() ? "" : " not") . " enabled\n" ; 816 print "abc43 def" . (warnings::enabled('def') ? "" : " not") . " enabled\n" ; 817 print "abc43 all" . (warnings::enabled('all') ? "" : " not") . " enabled\n" ; 818} 8191; 820--FILE-- def.pm 821package def ; 822use warnings "io" ; 823use warnings::register ; 824sub check { 825 print "def self" . (warnings::enabled() ? "" : " not") . " enabled\n" ; 826 print "def abc43" . (warnings::enabled('abc43') ? "" : " not") . " enabled\n" ; 827 print "def all" . (warnings::enabled('all') ? "" : " not") . " enabled\n" ; 828} 8291; 830--FILE-- 831use abc43 ; 832use def ; 833use warnings 'abc43'; 834abc43::check() ; 835def::check() ; 836no warnings 'abc43' ; 837use warnings 'def' ; 838abc43::check() ; 839def::check() ; 840use warnings 'abc43' ; 841use warnings 'def' ; 842abc43::check() ; 843def::check() ; 844no warnings 'abc43' ; 845no warnings 'def' ; 846abc43::check() ; 847def::check() ; 848use warnings; 849abc43::check() ; 850def::check() ; 851no warnings 'abc43' ; 852abc43::check() ; 853def::check() ; 854EXPECT 855abc43 self enabled 856abc43 def not enabled 857abc43 all not enabled 858def self not enabled 859def abc43 enabled 860def all not enabled 861abc43 self not enabled 862abc43 def enabled 863abc43 all not enabled 864def self enabled 865def abc43 not enabled 866def all not enabled 867abc43 self enabled 868abc43 def enabled 869abc43 all not enabled 870def self enabled 871def abc43 enabled 872def all not enabled 873abc43 self not enabled 874abc43 def not enabled 875abc43 all not enabled 876def self not enabled 877def abc43 not enabled 878def all not enabled 879abc43 self enabled 880abc43 def enabled 881abc43 all enabled 882def self enabled 883def abc43 enabled 884def all enabled 885abc43 self not enabled 886abc43 def enabled 887abc43 all enabled 888def self enabled 889def abc43 not enabled 890def all enabled 891######## 892-w 893--FILE-- abc44.pm 894package abc44 ; 895no warnings ; 896use warnings::register ; 897sub check { 898 print "ok1\n" if warnings::enabled() ; 899 print "ok2\n" if warnings::enabled("io") ; 900 print "ok3\n" if warnings::enabled("all") ; 901} 9021; 903--FILE-- 904use abc44 ; 905abc44::check() ; 906EXPECT 907ok1 908ok2 909ok3 910######## 911-w 912--FILE-- abc45.pm 913package abc45 ; 914no warnings ; 915use warnings::register ; 916sub check { 917 print "ok1\n" if !warnings::enabled() ; 918 print "ok2\n" if !warnings::enabled("io") ; 919 print "ok3\n" if !warnings::enabled("all") ; 920} 9211; 922--FILE-- 923use abc45 ; 924use warnings 'abc45'; 925no warnings ; 926abc45::check() ; 927EXPECT 928ok1 929ok2 930ok3 931######## 932 933--FILE-- abc46.pm 934package abc46 ; 935no warnings ; 936use warnings::register ; 937sub check { 938 print "ok1\n" if !warnings::enabled() ; 939 print "ok2\n" if !warnings::enabled("io") ; 940 print "ok3\n" if !warnings::enabled("all") ; 941 warnings::warnif("my message 1") ; 942 warnings::warnif('abc46', "my message 2") ; 943 warnings::warnif('io', "my message 3") ; 944 warnings::warnif('all', "my message 4") ; 945} 9461; 947--FILE-- 948use abc46 ; 949use warnings 'abc46'; 950no warnings ; 951BEGIN { $^W = 1 ; } 952abc46::check() ; 953EXPECT 954ok1 955ok2 956ok3 957######## 958 959--FILE-- abc47.pm 960package abc47 ; 961no warnings ; 962use warnings::register ; 963sub check { 964 print "ok1\n" if !warnings::enabled() ; 965 print "ok2\n" if !warnings::enabled("io") ; 966 print "ok3\n" if !warnings::enabled("all") ; 967} 9681; 969--FILE-- 970use abc47 ; 971use warnings 'abc47'; 972no warnings ; 973$^W = 1 ; 974abc47::check() ; 975EXPECT 976ok1 977ok2 978ok3 979######## 980 981--FILE-- abc48.pm 982$| = 1; 983package abc48 ; 984no warnings ; 985use warnings::register ; 986sub check { 987 print "ok1\n" if warnings::enabled() ; 988 print "ok2\n" if !warnings::enabled("io") ; 989 print "ok3\n" if !warnings::enabled("all") ; 990 print "ok4\n" if warnings::enabled("abc48") ; 991 warnings::warn("my message 1") ; 992 warnings::warnif("my message 2") ; 993 warnings::warnif('abc48', "my message 3") ; 994 warnings::warnif('io', "my message 4") ; 995 warnings::warnif('all', "my message 5") ; 996} 997sub in2 { no warnings ; check() } 998sub in1 { no warnings ; in2() } 9991; 1000--FILE-- 1001use abc48 ; 1002use warnings 'abc48'; 1003abc48::in1() ; 1004EXPECT 1005ok1 1006ok2 1007ok3 1008ok4 1009my message 1 at - line 3. 1010my message 2 at - line 3. 1011my message 3 at - line 3. 1012######## 1013 1014--FILE-- def.pm 1015package def ; 1016no warnings ; 1017use warnings::register ; 1018sub check { 1019 print "ok1\n" if warnings::enabled() ; 1020 print "ok2\n" if !warnings::enabled("io") ; 1021 print "ok3\n" if !warnings::enabled("all") ; 1022 print "ok4\n" if warnings::enabled("def") ; 1023 warnings::warn("my message 1") ; 1024 warnings::warnif("my message 2") ; 1025 warnings::warnif('def', "my message 3") ; 1026 warnings::warnif('io', "my message 4") ; 1027 warnings::warnif('all', "my message 5") ; 1028} 1029sub in2 { no warnings ; check() } 1030sub in1 { no warnings ; in2() } 10311; 1032--FILE-- abc49.pm 1033$| = 1; 1034package abc49 ; 1035use def ; 1036use warnings 'def'; 1037sub in1 { def::in1() ; } 10381; 1039--FILE-- 1040use abc49 ; 1041no warnings; 1042abc49::in1() ; 1043EXPECT 1044ok1 1045ok2 1046ok3 1047ok4 1048my message 1 at abc49.pm line 5. 1049my message 2 at abc49.pm line 5. 1050my message 3 at abc49.pm line 5. 1051######## 1052 1053--FILE-- def.pm 1054$| = 1; 1055package def ; 1056no warnings ; 1057use warnings::register ; 1058require Exporter; 1059@ISA = qw( Exporter ) ; 1060@EXPORT = qw( in1 ) ; 1061sub check { 1062 print "ok1\n" if warnings::enabled() ; 1063 print "ok2\n" if !warnings::enabled("io") ; 1064 print "ok3\n" if !warnings::enabled("all") ; 1065 print "ok4\n" if warnings::enabled("abc50") ; 1066 print "ok5\n" if !warnings::enabled("def") ; 1067 warnings::warn("my message 1") ; 1068 warnings::warnif("my message 2") ; 1069 warnings::warnif('abc50', "my message 3") ; 1070 warnings::warnif('def', "my message 4") ; 1071 warnings::warnif('io', "my message 5") ; 1072 warnings::warnif('all', "my message 6") ; 1073} 1074sub in2 { no warnings ; check() } 1075sub in1 { no warnings ; in2() } 10761; 1077--FILE-- abc50.pm 1078package abc50 ; 1079use warnings::register ; 1080use def ; 1081#@ISA = qw(def) ; 10821; 1083--FILE-- 1084use abc50 ; 1085no warnings; 1086use warnings 'abc50'; 1087abc50::in1() ; 1088EXPECT 1089ok2 1090ok3 1091ok4 1092ok5 1093my message 1 at - line 4. 1094my message 3 at - line 4. 1095######## 1096 1097--FILE-- def.pm 1098package def ; 1099no warnings ; 1100use warnings::register ; 1101 1102sub new 1103{ 1104 my $class = shift ; 1105 bless [], $class ; 1106} 1107 1108sub check 1109{ 1110 my $self = shift ; 1111 print "ok1\n" if !warnings::enabled() ; 1112 print "ok2\n" if !warnings::enabled("io") ; 1113 print "ok3\n" if !warnings::enabled("all") ; 1114 print "ok4\n" if warnings::enabled("abc51") ; 1115 print "ok5\n" if !warnings::enabled("def") ; 1116 print "ok6\n" if warnings::enabled($self) ; 1117 1118 warnings::warn("my message 1") ; 1119 warnings::warn($self, "my message 2") ; 1120 1121 warnings::warnif("my message 3") ; 1122 warnings::warnif('abc51', "my message 4") ; 1123 warnings::warnif('def', "my message 5") ; 1124 warnings::warnif('io', "my message 6") ; 1125 warnings::warnif('all', "my message 7") ; 1126 warnings::warnif($self, "my message 8") ; 1127} 1128sub in2 1129{ 1130 no warnings ; 1131 my $self = shift ; 1132 $self->check() ; 1133} 1134sub in1 1135{ 1136 no warnings ; 1137 my $self = shift ; 1138 $self->in2(); 1139} 11401; 1141--FILE-- abc51.pm 1142$| = 1; 1143package abc51 ; 1144use warnings::register ; 1145use def ; 1146@ISA = qw(def) ; 1147sub new 1148{ 1149 my $class = shift ; 1150 bless [], $class ; 1151} 1152 11531; 1154--FILE-- 1155use abc51 ; 1156no warnings; 1157use warnings 'abc51'; 1158$a = new abc51 ; 1159$a->in1() ; 1160print "**\n"; 1161$b = new def ; 1162$b->in1() ; 1163EXPECT 1164ok1 1165ok2 1166ok3 1167ok4 1168ok5 1169ok6 1170my message 1 at - line 5. 1171my message 2 at - line 5. 1172my message 4 at - line 5. 1173my message 8 at - line 5. 1174** 1175ok1 1176ok2 1177ok3 1178ok4 1179ok5 1180my message 1 at - line 8. 1181my message 2 at - line 8. 1182my message 4 at - line 8. 1183######## 1184 1185--FILE-- abc52.pm 1186package abc52 ; 1187use warnings::register ('foo', 'bar'); 1188sub check { 1189 warnings::warnif('abc52', "hello"); 1190 warnings::warnif('abc52::foo', "hello foo"); 1191 warnings::warnif('abc52::bar', "hello bar"); 1192} 11931; 1194--FILE-- 1195use abc52; 1196use warnings("abc52", "abc52::bar"); 1197abc52::check() ; 1198EXPECT 1199hello at - line 3. 1200hello bar at - line 3. 1201######## 1202 1203--FILE-- 1204# test for bug [perl #15395] 1205my ( $warn_cat, # warning category we'll try to control 1206 $warn_msg, # the error message to catch 1207); 1208 1209package SomeModule; 1210use warnings::register; 1211 1212BEGIN { 1213 $warn_cat = __PACKAGE__; 1214 $warn_msg = 'from ' . __PACKAGE__; 1215} 1216 1217# a sub that generates a random warning 1218sub gen_warning { 1219 warnings::warnif( $warn_msg ); 1220} 1221 1222package ClientModule; 1223# use SomeModule; (would go here) 1224our @CARP_NOT = ( $warn_cat ); # deliver warnings to *our* client 1225 1226# call_warner provokes a warning. It is delivered to its caller, 1227# who should also be able to control it 1228sub call_warner { 1229 SomeModule::gen_warning(); 1230} 1231 1232# user 1233 1234package main; 1235my $warn_line = __LINE__ + 3; # this line should be in the error message 1236eval { 1237 use warnings FATAL => $warn_cat; # we want to know if this works 1238 ClientModule::call_warner(); 1239}; 1240 1241# have we caught an error, and is it the one we generated? 1242print "ok1\n" if $@ =~ /$warn_msg/; 1243 1244# does it indicate the right line? 1245print "ok2\n" if $@ =~ /line $warn_line/; 1246EXPECT 1247ok1 1248ok2 1249######## 1250 1251--FILE-- fatal1.pm 1252package fatal1 ; 1253no warnings ; 1254print "ok1\n" if !warnings::fatal_enabled('all') ; 1255print "ok2\n" if !warnings::fatal_enabled("syntax") ; 12561; 1257--FILE-- 1258use fatal1 ; 1259EXPECT 1260ok1 1261ok2 1262######## 1263 1264--FILE-- fatal2.pm 1265package fatal2; 1266no warnings ; 1267print "ok1\n" if !warnings::fatal_enabled('all') ; 1268print "ok2\n" if warnings::fatal_enabled("syntax") ; 12691; 1270--FILE-- 1271use warnings FATAL => 'syntax' ; 1272use fatal2 ; 1273EXPECT 1274ok1 1275ok2 1276######## 1277 1278--FILE-- fatal3.pm 1279package fatal3 ; 1280no warnings ; 1281print "ok1\n" if warnings::fatal_enabled('all') ; 1282print "ok2\n" if warnings::fatal_enabled("syntax") ; 12831; 1284--FILE-- 1285use warnings FATAL => 'all' ; 1286use fatal3 ; 1287EXPECT 1288ok1 1289ok2 1290######## 1291 1292--FILE-- fatal4.pm 1293package fatal4 ; 1294no warnings ; 1295print "ok1\n" if warnings::fatal_enabled('all') ; 1296print "ok2\n" if warnings::fatal_enabled("void") ; 1297print "ok3\n" if !warnings::fatal_enabled("syntax") ; 12981; 1299--FILE-- 1300use warnings FATAL => 'all', NONFATAL => 'syntax' ; 1301use fatal4 ; 1302EXPECT 1303ok1 1304ok2 1305ok3 1306######## 1307{ Quux::quux(); } 1308{ no warnings; Quux::quux(); } 1309{ no warnings; use warnings "void"; Quux::quux(); } 1310{ use warnings; Quux::quux(); } 1311{ use warnings; no warnings "void"; Quux::quux(); } 1312use warnings (); 1313BEGIN { warnings::register_categories(qw(wibble wobble wabble wubble webble)); } 1314package Quux { 1315 sub quux { 1316 warnings::warnif($_, "My $_ is flanged") 1317 foreach qw(wibble wobble wabble wubble webble); 1318 (); 1319 } 1320} 1321{ Quux::quux(); } 1322{ no warnings; Quux::quux(); } 1323{ no warnings; use warnings "void"; Quux::quux(); } 1324{ use warnings; Quux::quux(); } 1325{ use warnings; no warnings "void"; Quux::quux(); } 1326{ no warnings; use warnings qw(wibble wabble webble); Quux::quux(); } 1327{ no warnings; use warnings qw(wobble wubble); Quux::quux(); } 1328{ use warnings; no warnings qw(wibble wabble webble); Quux::quux(); } 1329{ use warnings; no warnings qw(wobble wubble); Quux::quux(); } 1330{ use warnings qw(wubble NONFATAL void); Quux::quux(); } 1331{ use warnings qw(wubble); no warnings "void"; Quux::quux(); } 1332{ no warnings "webble"; Quux::quux(); } 1333{ use warnings qw(NONFATAL webble); Quux::quux(); } 1334print "done\n"; 1335EXPECT 1336My wibble is flanged at - line 4. 1337My wobble is flanged at - line 4. 1338My wabble is flanged at - line 4. 1339My wubble is flanged at - line 4. 1340My webble is flanged at - line 4. 1341My wibble is flanged at - line 5. 1342My wobble is flanged at - line 5. 1343My wabble is flanged at - line 5. 1344My wubble is flanged at - line 5. 1345My webble is flanged at - line 5. 1346My wibble is flanged at - line 18. 1347My wobble is flanged at - line 18. 1348My wabble is flanged at - line 18. 1349My wubble is flanged at - line 18. 1350My webble is flanged at - line 18. 1351My wibble is flanged at - line 19. 1352My wobble is flanged at - line 19. 1353My wabble is flanged at - line 19. 1354My wubble is flanged at - line 19. 1355My webble is flanged at - line 19. 1356My wibble is flanged at - line 20. 1357My wabble is flanged at - line 20. 1358My webble is flanged at - line 20. 1359My wobble is flanged at - line 21. 1360My wubble is flanged at - line 21. 1361My wobble is flanged at - line 22. 1362My wubble is flanged at - line 22. 1363My wibble is flanged at - line 23. 1364My wabble is flanged at - line 23. 1365My webble is flanged at - line 23. 1366My wubble is flanged at - line 24. 1367My wubble is flanged at - line 25. 1368My webble is flanged at - line 27. 1369done 1370######## 1371# NAME _at_level 1372select STDERR; 1373{ use warnings "utf8"; foo() } 1374sub foo { use warnings "syntax"; bar() } 1375sub bar { 1376 use warnings "unpack"; 1377 local $\="\n"; 1378 print "1. ", warnings::enabled_at_level("unpack", 0)||0; 1379 print "2. ", warnings::enabled_at_level("unpack", 1)||0; 1380 print "3. ", warnings::enabled_at_level("unpack", 2)||0; 1381 print "4. ", warnings::enabled_at_level("syntax", 0)||0; 1382 print "5. ", warnings::enabled_at_level("syntax", 1)||0; 1383 print "6. ", warnings::enabled_at_level("syntax", 2)||0; 1384 print "7. ", warnings::enabled_at_level("utf8", 0)||0; 1385 print "8. ", warnings::enabled_at_level("utf8", 1)||0; 1386 print "9. ", warnings::enabled_at_level("utf8", 2)||0; 1387 warnings::warn_at_level ("misc",0,"A mandatory foo warning"); 1388 warnings::warn_at_level ("misc",1,"A mandatory top-level warning"); 1389 warnings::warnif_at_level("syntax",0,"A conditional syntax warning"); 1390 warnings::warnif_at_level("syntax",1,"A conditional syntax warning"); 1391 warnings::warnif_at_level("utf8",0,"A conditional utf8 warning"); 1392 warnings::warnif_at_level("utf8",1,"A conditional utf8 warning"); 1393} 1394{ use warnings "syntax"; use warnings FATAL => "utf8"; foo2() } 1395sub foo2 { 1396 use warnings FATAL => "syntax"; use warnings "utf8"; bar2() 1397} 1398sub bar2 { 1399 $\="\n"; 1400 print "10. ", warnings::fatal_enabled_at_level("syntax", 0)||0; 1401 print "11. ", warnings::fatal_enabled_at_level("syntax", 1)||0; 1402 print "12. ", warnings::fatal_enabled_at_level("utf8", 0)||0; 1403 print "13. ", warnings::fatal_enabled_at_level("utf8", 1)||0; 1404 undef $\; 1405 eval { warnings::warn_at_level ("syntax",1,"A fatal warning") }; 1406 print "Died: $@" if $@; 1407 eval { warnings::warnif_at_level("syntax",1,"A fatal syntax warning") }; 1408 print "Died: $@" if $@; 1409 eval { warnings::warnif_at_level("syntax",2,"A syntax warning") }; 1410 print "Died: $@" if $@; 1411 eval { warnings::warnif_at_level("utf8",1,"A utf8 warning") }; 1412 print "Died: $@" if $@; 1413 eval { warnings::warnif_at_level("utf8",2,"A fatal utf8 warning") }; 1414 print "Died: $@" if $@; 1415} 1416EXPECT 14171. 0 14182. 0 14193. 0 14204. 1 14215. 0 14226. 0 14237. 0 14248. 1 14259. 0 1426A mandatory foo warning at - line 3. 1427A mandatory top-level warning at - line 2. 1428A conditional syntax warning at - line 3. 1429A conditional utf8 warning at - line 2. 143010. 1 143111. 0 143212. 0 143313. 1 1434Died: A fatal warning at - line 25. 1435Died: A fatal syntax warning at - line 25. 1436A syntax warning at - line 23. 1437A utf8 warning at - line 25. 1438Died: A fatal utf8 warning at - line 23. 1439######## 1440# NAME _at_level with filehandle 1441use warnings; 1442# Create temp file for testing handles. 1443open oUt, ">tmp" or die $!; 1444print oUt "foo\nbar\n"; 1445close oUt; 1446sub bimp { 1447 open FH, "tmp"; 1448 <FH>; <FH>; 1449 warnings::warn_at_level("syntax", 0, "Foo warning"); 1450 close FH; 1451 warnings::warn_at_level("syntax", 0, "Bar warning"); 1452}; 1453bimp; 1454EXPECT 1455Foo warning at - line 13, <FH> line 2. 1456Bar warning at - line 13. 1457######## 1458# NAME _at_level with chunky filehandle 1459use warnings; 1460# Create temp file for testing handles. 1461open oUt, ">tmp" or die $!; 1462print oUt "foo7bar7"; 1463close oUt; 1464sub bimp { 1465 open FH, "tmp"; 1466 $/ = 7; 1467 <FH>; <FH>; 1468 warnings::warn_at_level("syntax", 0, "Foo warning"); 1469 close FH; 1470 warnings::warn_at_level("syntax", 0, "Bar warning"); 1471}; 1472bimp; 1473EXPECT 1474Foo warning at - line 14, <FH> chunk 2. 1475Bar warning at - line 14. 1476