perlfunc.pod grammar fixes
[p5sagit/p5-mst-13.2.git] / pod / perllexwarn.pod
index cd76f3a..f250fb4 100644 (file)
@@ -207,8 +207,12 @@ The current hierarchy is:
 
   all -+
        |
+       +- assertions
+       |
        +- closure
        |
+       +- deprecated
+       |
        +- exiting
        |
        +- glob
@@ -219,6 +223,8 @@ The current hierarchy is:
        |                |
        |                +- exec
        |                |
+       |                +- layer
+       |                |
        |                +- newline
        |                |
        |                +- pipe
@@ -263,8 +269,6 @@ The current hierarchy is:
        |                |
        |                +- bareword
        |                |
-       |                +- deprecated
-       |                |
        |                +- digit
        |                |
        |                +- parenthesis
@@ -283,6 +287,8 @@ The current hierarchy is:
        |
        +- taint
        |
+       +- threads
+       |
        +- uninitialized
        |
        +- unpack
@@ -292,8 +298,6 @@ The current hierarchy is:
        +- utf8
        |
        +- void
-       |
-       +- y2k
 
 Just like the "strict" pragma any of these categories can be combined
 
@@ -312,6 +316,11 @@ C<warnings> pragma in a given scope the cumulative effect is additive.
 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
@@ -342,13 +351,20 @@ The scope where C<length> is used has escalated the C<void> warnings
 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
@@ -364,9 +380,10 @@ Consider the module C<MyMod::Abc> below.
 
     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";
         }
     }