all -+
|
+ +- assertions
+ |
+- closure
|
+ +- deprecated
+ |
+- exiting
|
+- glob
| |
| +- exec
| |
+ | +- layer
+ | |
| +- newline
| |
| +- pipe
| |
| +- bareword
| |
- | +- deprecated
- | |
| +- digit
| |
| +- parenthesis
|
+- taint
|
+ +- threads
+ |
+- uninitialized
|
+- unpack
+- utf8
|
+- void
- |
- +- y2k
Just like the "strict" pragma any of these categories can be combined
To determine which category a specific warning has been assigned to see
L<perldiag>.
+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
category into a fatal error, so the program terminates immediately it
encounters the warning.
-To explicitly disable 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:
+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
The C<warnings> pragma provides a number of functions that are useful for
sub open {
my $path = shift ;
- if (warnings::enabled() && $path !~ m#^/#) {
- warnings::warn("changing relative path to /tmp/");
- $path = "/tmp/$path" ;
+ if ($path !~ m#^/#) {
+ warnings::warn("changing relative path to /var/abc")
+ if warnings::enabled();
+ $path = "/var/abc/$path";
}
}