X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/0e06870bf080a38cda51c06c6612359afc2334e1..4350c9a7a6da0a61235d99723a34e65aefb57ffd:/pod/perllexwarn.pod diff --git a/pod/perllexwarn.pod b/pod/perllexwarn.pod index b98e333..9b61427 100644 --- a/pod/perllexwarn.pod +++ b/pod/perllexwarn.pod @@ -207,10 +207,12 @@ The current hierarchy is: all -+ | - +- chmod + +- assertions | +- closure | + +- deprecated + | +- exiting | +- glob @@ -221,6 +223,8 @@ The current hierarchy is: | | | +- exec | | + | +- layer + | | | +- newline | | | +- pipe @@ -265,8 +269,6 @@ The current hierarchy is: | | | +- bareword | | - | +- deprecated - | | | +- digit | | | +- parenthesis @@ -285,7 +287,7 @@ The current hierarchy is: | +- taint | - +- umask + +- threads | +- uninitialized | @@ -316,6 +318,11 @@ C pragma in a given scope the cumulative effect is additive. To determine which category a specific warning has been assigned to see L. +Note: In Perl 5.6.1, the lexical warnings category "deprecated" was a +sub-category of the "syntax" category. It is now a top-level category +in its own right. + + =head2 Fatal Warnings The presence of the word "FATAL" in the category list will escalate any @@ -325,16 +332,16 @@ and C can all produce a C<"Useless use of xxx in void context"> warning. use warnings ; - + time ; - + { use warnings FATAL => qw(void) ; length "abc" ; } - + join "", 1,2,3 ; - + print "done\n" ; When run it produces this output @@ -346,6 +353,19 @@ The scope where C is used has escalated the C warnings category into a fatal error, so the program terminates immediately it encounters the warning. +To explicitly turn off a "FATAL" warning you just disable the warning +it is associated with. So, for example, to disable the "void" warning +in the example above, either of these will do the trick: + + no warnings qw(void); + no warnings FATAL => qw(void); + +If you want to downgrade a warning that has been escalated into a fatal +error back to a normal warning, you can use the "NONFATAL" keyword. For +example, the code below will promote all warnings into fatal errors, +except for those in the "syntax" category. + + use warnings FATAL => 'all', NONFATAL => 'syntax'; =head2 Reporting Warnings from a Module @@ -362,8 +382,9 @@ Consider the module C below. sub open { my $path = shift ; - if (warnings::enabled() && $path !~ m#^/#) { - warnings::warn("changing relative path to /tmp/"); + if ($path !~ m#^/#) { + warnings::warn("changing relative path to /tmp/") + if warnings::enabled(); $path = "/tmp/$path" ; } }