1Check warnings::enabled & warnings::warn 2 3__END__ 4 5--FILE-- abc0.pm 6package abc0 ; 7use warnings "io" ; 8print "ok1\n" if ! warnings::enabled('all') ; 9print "ok2\n" if ! warnings::enabled("io") ; 101; 11--FILE-- 12no warnings; 13use abc0 ; 14EXPECT 15ok1 16ok2 17######## 18 19--FILE-- abc1.pm 20package abc1 ; 21no warnings ; 22print "ok1\n" if !warnings::enabled('all') ; 23print "ok2\n" if warnings::enabled("syntax") ; 241; 25--FILE-- 26use warnings 'syntax' ; 27use abc1 ; 28EXPECT 29ok1 30ok2 31######## 32 33--FILE-- abc2.pm 34package abc2 ; 35use warnings 'syntax' ; 36print "ok1\n" if warnings::enabled('io') ; 37print "ok2\n" if ! warnings::enabled("syntax") ; 381; 39--FILE-- 40use warnings 'io' ; 41use abc2 ; 42EXPECT 43ok1 44ok2 45######## 46 47--FILE-- abc3 48no warnings ; 49print "ok1\n" if !warnings::enabled('all') ; 50print "ok2\n" if !warnings::enabled("syntax") ; 511; 52--FILE-- 53use warnings 'syntax' ; 54require "abc3" ; 55EXPECT 56ok1 57ok2 58######## 59 60--FILE-- abc4 61use warnings 'syntax' ; 62print "ok1\n" if ! warnings::enabled('all') ; 63print "ok2\n" if ! warnings::enabled("syntax") ; 64print "ok3\n" if ! warnings::enabled("io") ; 651; 66--FILE-- 67use warnings 'io' ; 68require "abc4" ; 69EXPECT 70ok1 71ok2 72ok3 73######## 74 75--FILE-- abc5.pm 76package abc5 ; 77no warnings ; 78sub check { 79 print "ok1\n" if !warnings::enabled('all') ; 80 print "ok2\n" if warnings::enabled("syntax") ; 81} 821; 83--FILE-- 84use warnings 'syntax' ; 85use abc5 ; 86abc5::check() ; 87EXPECT 88ok1 89ok2 90######## 91 92--FILE-- abc6.pm 93package abc6 ; 94use warnings 'io' ; 95sub check { 96 print "ok1\n" if ! warnings::enabled('all') ; 97 print "ok2\n" if warnings::enabled("syntax") ; 98 print "ok3\n" if ! warnings::enabled("io") ; 99} 1001; 101--FILE-- 102use warnings 'syntax' ; 103use abc6 ; 104abc6::check() ; 105EXPECT 106ok1 107ok2 108ok3 109######## 110 111--FILE-- abc7 112package abc7 ; 113no warnings ; 114sub check { 115 print "ok1\n" if !warnings::enabled('all') ; 116 print "ok2\n" if warnings::enabled("syntax") ; 117} 1181; 119--FILE-- 120use warnings 'syntax' ; 121require "abc7" ; 122abc7::check() ; 123EXPECT 124ok1 125ok2 126######## 127 128--FILE-- abc8 129package abc8 ; 130use warnings 'io' ; 131sub check { 132 print "ok1\n" if ! warnings::enabled('all') ; 133 print "ok2\n" if warnings::enabled("syntax") ; 134 print "ok3\n" if ! warnings::enabled("io") ; 135} 1361; 137--FILE-- 138use warnings 'syntax' ; 139require "abc8" ; 140abc8::check() ; 141EXPECT 142ok1 143ok2 144ok3 145######## 146 147--FILE-- abc9.pm 148package abc9 ; 149use warnings "io" ; 150print "ok1\n" if ! warnings::enabled('all') ; 151print "ok2\n" if ! warnings::enabled("io") ; 1521; 153--FILE-- def.pm 154package def; 155no warnings; 156use abc9 ; 1571; 158--FILE-- 159use warnings; 160use def ; 161EXPECT 162ok1 163ok2 164######## 165 166--FILE-- abc10.pm 167package abc10 ; 168no warnings ; 169print "ok1\n" if ! warnings::enabled('all') ; 170print "ok2\n" if warnings::enabled("syntax") ; 171print "ok3\n" if !warnings::enabled("io") ; 1721; 173--FILE-- def.pm 174use warnings 'syntax' ; 175print "ok4\n" if !warnings::enabled('all') ; 176print "ok5\n" if !warnings::enabled("io") ; 177use abc10 ; 1781; 179--FILE-- 180use warnings 'io' ; 181use def ; 182EXPECT 183ok1 184ok2 185ok3 186ok4 187ok5 188######## 189 190--FILE-- abc11.pm 191package abc11 ; 192no warnings ; 193sub check { 194 print "ok1\n" if !warnings::enabled('all') ; 195 print "ok2\n" if warnings::enabled("syntax") ; 196} 1971; 198--FILE-- 199use warnings 'syntax' ; 200use abc11 ; 201eval { 202 abc11::check() ; 203}; 204print $@ ; 205EXPECT 206ok1 207ok2 208######## 209 210--FILE-- abc12.pm 211package abc12 ; 212use warnings 'io' ; 213sub check { 214 print "ok1\n" if ! warnings::enabled('all') ; 215 print "ok2\n" if warnings::enabled("syntax") ; 216 print "ok3\n" if ! warnings::enabled("io") ; 217} 2181; 219--FILE-- 220use warnings 'syntax' ; 221use abc12 ; 222eval { 223 abc12::check() ; 224 } ; 225print $@ ; 226EXPECT 227ok1 228ok2 229ok3 230######## 231 232--FILE-- abc13 233package abc13 ; 234no warnings ; 235sub check { 236 print "ok1\n" if !warnings::enabled('all') ; 237 print "ok2\n" if warnings::enabled("syntax") ; 238} 2391; 240--FILE-- 241use warnings 'syntax' ; 242require "abc13" ; 243eval { 244 abc13::check() ; 245 } ; 246print $@ ; 247EXPECT 248ok1 249ok2 250######## 251 252--FILE-- abc14 253package abc14 ; 254use warnings 'io' ; 255sub check { 256 print "ok1\n" if !warnings::enabled('all') ; 257 print "ok2\n" if warnings::enabled("syntax") ; 258 print "ok3\n" if warnings::enabled("io") ; 259} 2601; 261--FILE-- 262use warnings 'syntax' ; 263require "abc14" ; 264eval { 265 use warnings 'io' ; 266 abc14::check() ; 267}; 268abc14::check() ; 269print $@ ; 270EXPECT 271ok1 272ok2 273ok3 274ok1 275ok2 276######## 277 278--FILE-- abc15.pm 279package abc15 ; 280use warnings 'io' ; 281sub check { 282 print "ok1\n" if ! warnings::enabled('all') ; 283 print "ok2\n" if warnings::enabled("syntax") ; 284 print "ok3\n" if ! warnings::enabled("io") ; 285} 2861; 287--FILE-- 288use warnings 'syntax' ; 289use abc15 ; 290sub fred { abc15::check() } 291fred() ; 292EXPECT 293ok1 294ok2 295ok3 296######## 297 298--FILE-- abc16.pm 299package abc16 ; 300use warnings 'io' ; 301sub check { 302 print "ok1\n" if ! warnings::enabled('all') ; 303} 3041; 305--FILE-- 306use warnings 'syntax' ; 307use abc16 ; 308sub fred { no warnings ; abc16::check() } 309fred() ; 310EXPECT 311ok1 312######## 313 314--FILE-- abc17.pm 315package abc17 ; 316use warnings 'misc' ; 317sub check { 318 print "ok1\n" if ! warnings::enabled('all') ; 319 print "ok2\n" if warnings::enabled("syntax") ; 320 print "ok3\n" if warnings::enabled("io") ; 321 print "ok4\n" if ! warnings::enabled("misc") ; 322} 3231; 324--FILE-- 325use warnings 'syntax' ; 326use abc17 ; 327sub fred { use warnings 'io' ; abc17::check() } 328fred() ; 329EXPECT 330ok1 331ok2 332ok3 333ok4 334######## 335 336# check warnings::warn 337use warnings ; 338eval { 339 warnings::warn() 340 } ; 341print $@ ; 342eval { 343 warnings::warn("fred", "joe") 344 } ; 345print $@ ; 346EXPECT 347Usage: warnings::warn([category,] 'message') at - line 5 348Unknown warnings category 'fred' at - line 9 349######## 350 351# check warnings::warnif 352use warnings ; 353eval { 354 warnings::warnif() 355} ; 356print $@ ; 357eval { 358 warnings::warnif("fred", "joe") 359} ; 360print $@ ; 361EXPECT 362Usage: warnings::warnif([category,] 'message') at - line 5 363Unknown warnings category 'fred' at - line 9 364######## 365 366--FILE-- abc18.pm 367package abc18 ; 368use warnings 'misc' ; 369sub check { warnings::warn("io", "hello") } 3701; 371--FILE-- 372use warnings "io" ; 373use abc18; 374abc18::check() ; 375EXPECT 376hello at - line 3 377######## 378 379--FILE-- abc19.pm 380package abc19 ; 381use warnings 'misc' ; 382sub check { warnings::warn("misc", "hello") } 3831; 384--FILE-- 385use warnings "io" ; 386use abc19; 387abc19::check() ; 388EXPECT 389hello at - line 3 390######## 391 392--FILE-- abc20.pm 393package abc20 ; 394use warnings 'misc' ; 395sub check { warnings::warn("io", "hello") } 3961; 397--FILE-- 398use warnings qw( FATAL deprecated ) ; 399use abc20; 400eval { 401 abc20::check() ; 402 } ; 403print "[[$@]]\n"; 404EXPECT 405hello at - line 4 406[[]] 407######## 408 409--FILE-- abc21.pm 410package abc21 ; 411use warnings 'misc' ; 412sub check { warnings::warn("io", "hello") } 4131; 414--FILE-- 415use warnings qw( FATAL io ) ; 416use abc21; 417eval { 418 abc21::check() ; 419} ; 420print "[[$@]]\n"; 421EXPECT 422[[hello at - line 4 423]] 424######## 425-W 426--FILE-- abc22.pm 427package abc22 ; 428use warnings "io" ; 429print "ok1\n" if warnings::enabled("io") ; 430print "ok2\n" if warnings::enabled("all") ; 4311; 432--FILE-- 433no warnings; 434use abc22 ; 435EXPECT 436ok1 437ok2 438######## 439-X 440--FILE-- abc23.pm 441package abc23 ; 442use warnings "io" ; 443print "ok1\n" if !warnings::enabled("io") ; 444print "ok2\n" if !warnings::enabled("all") ; 4451; 446--FILE-- 447use warnings; 448use abc23 ; 449EXPECT 450ok1 451ok2 452######## 453 454--FILE-- abc24.pm 455package abc24 ; 456no warnings ; 457sub check { 458 print "ok\n" if ! warnings::enabled() ; 459} 4601; 461--FILE-- 462use warnings 'syntax' ; 463use abc24 ; 464abc24::check() ; 465EXPECT 466package 'abc24' not registered for warnings at abc24.pm line 4 467######## 468 469--FILE-- abc25.pm 470package abc25 ; 471no warnings ; 472sub check { 473 warnings::warn("fred") ; 474} 4751; 476--FILE-- 477use warnings 'syntax' ; 478use abc25 ; 479abc25::check() ; 480EXPECT 481package 'abc25' not registered for warnings at abc25.pm line 4 482######## 483 484--FILE-- abc26.pm 485package abc26 ; 486no warnings ; 487sub check { 488 warnings::warnif("fred") ; 489} 4901; 491--FILE-- 492use warnings 'syntax' ; 493use abc26 ; 494abc26::check() ; 495EXPECT 496package 'abc26' not registered for warnings at abc26.pm line 4 497######## 498 499--FILE-- abc27.pm 500package abc27 ; 501use warnings 'io' ; 502use warnings::register ; 503sub check { 504 print "ok1\n" if warnings::enabled ; 505 print "ok2\n" if warnings::enabled("syntax") ; 506 print "ok3\n" if !warnings::enabled("io") ; 507} 5081; 509--FILE-- 510use warnings 'syntax' ; 511use abc27 ; 512use warnings 'abc27' ; 513abc27::check() ; 514EXPECT 515ok1 516ok2 517ok3 518######## 519 520--FILE-- abc28.pm 521package abc28 ; 522use warnings 'io' ; 523use warnings::register ; 524sub check { 525 print "ok1\n" if !warnings::enabled ; 526 print "ok2\n" if warnings::enabled("syntax") ; 527 print "ok3\n" if !warnings::enabled("io") ; 528} 5291; 530--FILE-- 531use warnings 'syntax' ; 532use abc28 ; 533abc28::check() ; 534EXPECT 535ok1 536ok2 537ok3 538######## 539 540--FILE-- abc29.pm 541package abc29 ; 542no warnings ; 543use warnings::register ; 544sub check { 545 print "ok1\n" if warnings::enabled ; 546 print "ok2\n" if warnings::enabled("syntax") ; 547} 5481; 549--FILE-- 550use warnings 'syntax' ; 551use abc29 ; 552use warnings 'abc29' ; 553eval { abc29::check() ; }; 554print $@ ; 555EXPECT 556ok1 557ok2 558######## 559 560--FILE-- abc30.pm 561package abc30 ; 562use warnings 'io' ; 563use warnings::register ; 564sub check { 565 print "ok1\n" if !warnings::enabled ; 566 print "ok2\n" if warnings::enabled("syntax") ; 567 print "ok3\n" if !warnings::enabled("io") ; 568} 5691; 570--FILE-- 571use warnings 'syntax' ; 572use abc30 ; 573eval { abc30::check() ; } ; 574print $@ ; 575EXPECT 576ok1 577ok2 578ok3 579######## 580 581--FILE-- abc31.pm 582package abc31 ; 583use warnings 'io' ; 584use warnings::register ; 585sub check { 586 print "ok1\n" if warnings::enabled ; 587 print "ok2\n" if warnings::enabled("syntax") ; 588 print "ok3\n" if !warnings::enabled("io") ; 589} 5901; 591--FILE-- 592use warnings 'syntax' ; 593use abc31 ; 594use warnings 'abc31' ; 595sub fred { abc31::check() } 596fred() ; 597EXPECT 598ok1 599ok2 600ok3 601######## 602 603--FILE-- abc32.pm 604package abc32 ; 605use warnings 'io' ; 606use warnings::register ; 607sub check { 608 print "ok1\n" if ! warnings::enabled ; 609} 6101; 611--FILE-- 612use warnings 'syntax' ; 613use abc32 ; 614sub fred { no warnings ; abc32::check() } 615fred() ; 616EXPECT 617ok1 618######## 619 620--FILE-- abc33.pm 621package abc33 ; 622use warnings 'misc' ; 623use warnings::register; 624sub check { 625 print "ok1\n" if warnings::enabled ; 626 print "ok2\n" if warnings::enabled("syntax") ; 627 print "ok3\n" if warnings::enabled("io") ; 628 print "ok4\n" if ! warnings::enabled("misc") ; 629} 6301; 631--FILE-- 632use warnings 'syntax' ; 633use abc33 ; 634use warnings 'abc33' ; 635sub fred { use warnings 'io' ; abc33::check() } 636fred() ; 637EXPECT 638ok1 639ok2 640ok3 641ok4 642######## 643 644--FILE-- abc34.pm 645package abc34 ; 646use warnings 'misc' ; 647use warnings::register; 648sub check { warnings::warn("hello") } 6491; 650--FILE-- 651use abc34; 652use warnings "abc34" ; 653abc34::check() ; 654EXPECT 655hello at - line 3 656######## 657 658--FILE-- abc35.pm 659package abc35 ; 660use warnings::register; 661sub check { warnings::warn("hello") } 6621; 663--FILE-- 664use abc35; 665abc35::check() ; 666EXPECT 667hello at - line 2 668######## 669 670--FILE-- abc36.pm 671package abc36 ; 672use warnings::register ; 673sub check { warnings::warn("hello") } 6741; 675--FILE-- 676use abc36; 677use warnings qw( FATAL deprecated ) ; 678eval { 679 abc36::check() ; 680 } ; 681print "[[$@]]\n"; 682EXPECT 683hello at - line 4 684[[]] 685######## 686 687--FILE-- abc37.pm 688package abc37 ; 689use warnings::register ; 690sub check { warnings::warn("hello") } 6911; 692--FILE-- 693use abc37; 694use warnings qw( FATAL abc37 ) ; 695eval { 696 abc37::check() ; 697 } ; 698print "[[$@]]\n"; 699EXPECT 700[[hello at - line 4 701]] 702######## 703-W 704--FILE-- abc38.pm 705package abc38 ; 706use warnings "io" ; 707use warnings::register ; 708sub check { 709 print "ok1\n" if warnings::enabled() ; 710 print "ok2\n" if warnings::enabled("io") ; 711 print "ok3\n" if warnings::enabled("all") ; 712} 7131; 714--FILE-- 715no warnings; 716use abc38 ; 717abc38::check() ; 718EXPECT 719ok1 720ok2 721ok3 722######## 723-X 724--FILE-- abc39.pm 725package abc39 ; 726use warnings "io" ; 727use warnings::register ; 728sub check { 729 print "ok1\n" if !warnings::enabled() ; 730 print "ok2\n" if !warnings::enabled("io") ; 731 print "ok3\n" if !warnings::enabled("all") ; 732} 7331; 734--FILE-- 735no warnings; 736use abc39 ; 737abc39::check() ; 738EXPECT 739ok1 740ok2 741ok3 742######## 743 744--FILE-- abc40.pm 745package abc40 ; 746use warnings "io" ; 747use warnings::register ; 748sub check { 749 print "ok1\n" if warnings::enabled() ; 750 print "ok2\n" if warnings::enabled("io") ; 751 print "ok3\n" if warnings::enabled("all") ; 752} 7531; 754--FILE-- 755use warnings 'all'; 756use abc40 ; 757abc40::check() ; 758EXPECT 759ok1 760ok2 761ok3 762######## 763 764--FILE-- abc41.pm 765package abc41 ; 766use warnings "io" ; 767use warnings::register ; 768sub check { 769 print "ok1\n" if !warnings::enabled() ; 770 print "ok2\n" if !warnings::enabled("io") ; 771 print "ok3\n" if !warnings::enabled("all") ; 772} 7731; 774--FILE-- 775use abc41 ; 776no warnings ; 777abc41::check() ; 778EXPECT 779ok1 780ok2 781ok3 782######## 783 784--FILE-- abc42.pm 785package abc42 ; 786use warnings "io" ; 787use warnings::register ; 788sub check { 789 print "ok1\n" if !warnings::enabled() ; 790 print "ok2\n" if !warnings::enabled("io") ; 791 print "ok3\n" if !warnings::enabled("all") ; 792 warnings::warnif("my message 1") ; 793 warnings::warnif('abc42', "my message 2") ; 794 warnings::warnif('io', "my message 3") ; 795 warnings::warnif('all', "my message 4") ; 796} 7971; 798--FILE-- 799use abc42 ; 800use warnings 'abc42'; 801no warnings ; 802abc42::check() ; 803EXPECT 804ok1 805ok2 806ok3 807######## 808 809--FILE-- abc43.pm 810package abc43 ; 811use warnings "io" ; 812use warnings::register ; 813sub check { 814 print "abc43 self" . (warnings::enabled() ? "" : " not") . " enabled\n" ; 815 print "abc43 def" . (warnings::enabled('def') ? "" : " not") . " enabled\n" ; 816 print "abc43 all" . (warnings::enabled('all') ? "" : " not") . " enabled\n" ; 817} 8181; 819--FILE-- def.pm 820package def ; 821use warnings "io" ; 822use warnings::register ; 823sub check { 824 print "def self" . (warnings::enabled() ? "" : " not") . " enabled\n" ; 825 print "def abc43" . (warnings::enabled('abc43') ? "" : " not") . " enabled\n" ; 826 print "def all" . (warnings::enabled('all') ? "" : " not") . " enabled\n" ; 827} 8281; 829--FILE-- 830use abc43 ; 831use def ; 832use warnings 'abc43'; 833abc43::check() ; 834def::check() ; 835no warnings 'abc43' ; 836use warnings 'def' ; 837abc43::check() ; 838def::check() ; 839use warnings 'abc43' ; 840use warnings 'def' ; 841abc43::check() ; 842def::check() ; 843no warnings 'abc43' ; 844no warnings 'def' ; 845abc43::check() ; 846def::check() ; 847use warnings; 848abc43::check() ; 849def::check() ; 850no warnings 'abc43' ; 851abc43::check() ; 852def::check() ; 853EXPECT 854abc43 self enabled 855abc43 def not enabled 856abc43 all not enabled 857def self not enabled 858def abc43 enabled 859def all not enabled 860abc43 self not enabled 861abc43 def enabled 862abc43 all not enabled 863def self enabled 864def abc43 not enabled 865def all not enabled 866abc43 self enabled 867abc43 def enabled 868abc43 all not enabled 869def self enabled 870def abc43 enabled 871def all not enabled 872abc43 self not enabled 873abc43 def not enabled 874abc43 all not enabled 875def self not enabled 876def abc43 not enabled 877def all not enabled 878abc43 self enabled 879abc43 def enabled 880abc43 all enabled 881def self enabled 882def abc43 enabled 883def all enabled 884abc43 self not enabled 885abc43 def enabled 886abc43 all not enabled 887def self enabled 888def abc43 not enabled 889def all not enabled 890######## 891-w 892--FILE-- abc44.pm 893package abc44 ; 894no warnings ; 895use warnings::register ; 896sub check { 897 print "ok1\n" if warnings::enabled() ; 898 print "ok2\n" if warnings::enabled("io") ; 899 print "ok3\n" if warnings::enabled("all") ; 900} 9011; 902--FILE-- 903use abc44 ; 904abc44::check() ; 905EXPECT 906ok1 907ok2 908ok3 909######## 910-w 911--FILE-- abc45.pm 912package abc45 ; 913no warnings ; 914use warnings::register ; 915sub check { 916 print "ok1\n" if !warnings::enabled() ; 917 print "ok2\n" if !warnings::enabled("io") ; 918 print "ok3\n" if !warnings::enabled("all") ; 919} 9201; 921--FILE-- 922use abc45 ; 923use warnings 'abc45'; 924no warnings ; 925abc45::check() ; 926EXPECT 927ok1 928ok2 929ok3 930######## 931 932--FILE-- abc46.pm 933package abc46 ; 934no warnings ; 935use warnings::register ; 936sub check { 937 print "ok1\n" if !warnings::enabled() ; 938 print "ok2\n" if !warnings::enabled("io") ; 939 print "ok3\n" if !warnings::enabled("all") ; 940 warnings::warnif("my message 1") ; 941 warnings::warnif('abc46', "my message 2") ; 942 warnings::warnif('io', "my message 3") ; 943 warnings::warnif('all', "my message 4") ; 944} 9451; 946--FILE-- 947use abc46 ; 948use warnings 'abc46'; 949no warnings ; 950BEGIN { $^W = 1 ; } 951abc46::check() ; 952EXPECT 953ok1 954ok2 955ok3 956######## 957 958--FILE-- abc47.pm 959package abc47 ; 960no warnings ; 961use warnings::register ; 962sub check { 963 print "ok1\n" if !warnings::enabled() ; 964 print "ok2\n" if !warnings::enabled("io") ; 965 print "ok3\n" if !warnings::enabled("all") ; 966} 9671; 968--FILE-- 969use abc47 ; 970use warnings 'abc47'; 971no warnings ; 972$^W = 1 ; 973abc47::check() ; 974EXPECT 975ok1 976ok2 977ok3 978######## 979 980--FILE-- abc48.pm 981$| = 1; 982package abc48 ; 983no warnings ; 984use warnings::register ; 985sub check { 986 print "ok1\n" if warnings::enabled() ; 987 print "ok2\n" if !warnings::enabled("io") ; 988 print "ok3\n" if !warnings::enabled("all") ; 989 print "ok4\n" if warnings::enabled("abc48") ; 990 warnings::warn("my message 1") ; 991 warnings::warnif("my message 2") ; 992 warnings::warnif('abc48', "my message 3") ; 993 warnings::warnif('io', "my message 4") ; 994 warnings::warnif('all', "my message 5") ; 995} 996sub in2 { no warnings ; check() } 997sub in1 { no warnings ; in2() } 9981; 999--FILE-- 1000use abc48 ; 1001use warnings 'abc48'; 1002abc48::in1() ; 1003EXPECT 1004ok1 1005ok2 1006ok3 1007ok4 1008my message 1 at - line 3 1009my message 2 at - line 3 1010my message 3 at - line 3 1011######## 1012 1013--FILE-- def.pm 1014package def ; 1015no warnings ; 1016use warnings::register ; 1017sub check { 1018 print "ok1\n" if warnings::enabled() ; 1019 print "ok2\n" if !warnings::enabled("io") ; 1020 print "ok3\n" if !warnings::enabled("all") ; 1021 print "ok4\n" if warnings::enabled("def") ; 1022 warnings::warn("my message 1") ; 1023 warnings::warnif("my message 2") ; 1024 warnings::warnif('def', "my message 3") ; 1025 warnings::warnif('io', "my message 4") ; 1026 warnings::warnif('all', "my message 5") ; 1027} 1028sub in2 { no warnings ; check() } 1029sub in1 { no warnings ; in2() } 10301; 1031--FILE-- abc49.pm 1032$| = 1; 1033package abc49 ; 1034use def ; 1035use warnings 'def'; 1036sub in1 { def::in1() ; } 10371; 1038--FILE-- 1039use abc49 ; 1040no warnings; 1041abc49::in1() ; 1042EXPECT 1043ok1 1044ok2 1045ok3 1046ok4 1047my message 1 at abc49.pm line 5 1048my message 2 at abc49.pm line 5 1049my message 3 at abc49.pm line 5 1050######## 1051 1052--FILE-- def.pm 1053$| = 1; 1054package def ; 1055no warnings ; 1056use warnings::register ; 1057require Exporter; 1058@ISA = qw( Exporter ) ; 1059@EXPORT = qw( in1 ) ; 1060sub check { 1061 print "ok1\n" if warnings::enabled() ; 1062 print "ok2\n" if !warnings::enabled("io") ; 1063 print "ok3\n" if !warnings::enabled("all") ; 1064 print "ok4\n" if warnings::enabled("abc50") ; 1065 print "ok5\n" if !warnings::enabled("def") ; 1066 warnings::warn("my message 1") ; 1067 warnings::warnif("my message 2") ; 1068 warnings::warnif('abc50', "my message 3") ; 1069 warnings::warnif('def', "my message 4") ; 1070 warnings::warnif('io', "my message 5") ; 1071 warnings::warnif('all', "my message 6") ; 1072} 1073sub in2 { no warnings ; check() } 1074sub in1 { no warnings ; in2() } 10751; 1076--FILE-- abc50.pm 1077package abc50 ; 1078use warnings::register ; 1079use def ; 1080#@ISA = qw(def) ; 10811; 1082--FILE-- 1083use abc50 ; 1084no warnings; 1085use warnings 'abc50'; 1086abc50::in1() ; 1087EXPECT 1088ok2 1089ok3 1090ok4 1091ok5 1092my message 1 at - line 4 1093my message 3 at - line 4 1094######## 1095 1096--FILE-- def.pm 1097package def ; 1098no warnings ; 1099use warnings::register ; 1100 1101sub new 1102{ 1103 my $class = shift ; 1104 bless [], $class ; 1105} 1106 1107sub check 1108{ 1109 my $self = shift ; 1110 print "ok1\n" if !warnings::enabled() ; 1111 print "ok2\n" if !warnings::enabled("io") ; 1112 print "ok3\n" if !warnings::enabled("all") ; 1113 print "ok4\n" if warnings::enabled("abc51") ; 1114 print "ok5\n" if !warnings::enabled("def") ; 1115 print "ok6\n" if warnings::enabled($self) ; 1116 1117 warnings::warn("my message 1") ; 1118 warnings::warn($self, "my message 2") ; 1119 1120 warnings::warnif("my message 3") ; 1121 warnings::warnif('abc51', "my message 4") ; 1122 warnings::warnif('def', "my message 5") ; 1123 warnings::warnif('io', "my message 6") ; 1124 warnings::warnif('all', "my message 7") ; 1125 warnings::warnif($self, "my message 8") ; 1126} 1127sub in2 1128{ 1129 no warnings ; 1130 my $self = shift ; 1131 $self->check() ; 1132} 1133sub in1 1134{ 1135 no warnings ; 1136 my $self = shift ; 1137 $self->in2(); 1138} 11391; 1140--FILE-- abc51.pm 1141$| = 1; 1142package abc51 ; 1143use warnings::register ; 1144use def ; 1145@ISA = qw(def) ; 1146sub new 1147{ 1148 my $class = shift ; 1149 bless [], $class ; 1150} 1151 11521; 1153--FILE-- 1154use abc51 ; 1155no warnings; 1156use warnings 'abc51'; 1157$a = new abc51 ; 1158$a->in1() ; 1159print "**\n"; 1160$b = new def ; 1161$b->in1() ; 1162EXPECT 1163ok1 1164ok2 1165ok3 1166ok4 1167ok5 1168ok6 1169my message 1 at - line 5 1170my message 2 at - line 5 1171my message 4 at - line 5 1172my message 8 at - line 5 1173** 1174ok1 1175ok2 1176ok3 1177ok4 1178ok5 1179my message 1 at - line 8 1180my message 2 at - line 8 1181my message 4 at - line 8 1182######## 1183 1184--FILE-- 1185# test for bug [perl #15395] 1186my ( $warn_cat, # warning category we'll try to control 1187 $warn_msg, # the error message to catch 1188); 1189 1190package SomeModule; 1191use warnings::register; 1192 1193BEGIN { 1194 $warn_cat = __PACKAGE__; 1195 $warn_msg = 'from ' . __PACKAGE__; 1196} 1197 1198# a sub that generates a random warning 1199sub gen_warning { 1200 warnings::warnif( $warn_msg ); 1201} 1202 1203package ClientModule; 1204# use SomeModule; (would go here) 1205our @CARP_NOT = ( $warn_cat ); # deliver warnings to *our* client 1206 1207# call_warner provokes a warning. It is delivered to its caller, 1208# who should also be able to control it 1209sub call_warner { 1210 SomeModule::gen_warning(); 1211} 1212 1213# user 1214 1215package main; 1216my $warn_line = __LINE__ + 3; # this line should be in the error message 1217eval { 1218 use warnings FATAL => $warn_cat; # we want to know if this works 1219 ClientModule::call_warner(); 1220}; 1221 1222# have we caught an error, and is it the one we generated? 1223print "ok1\n" if $@ =~ /$warn_msg/; 1224 1225# does it indicate the right line? 1226print "ok2\n" if $@ =~ /line $warn_line/; 1227EXPECT 1228ok1 1229ok2 1230