diff options
-rw-r--r-- | lib/warnings.pm | 8 | ||||
-rw-r--r-- | pod/perl.pod | 9 | ||||
-rw-r--r-- | pod/perlfunc.pod | 19 | ||||
-rw-r--r-- | pod/perlintro.pod | 8 | ||||
-rw-r--r-- | regen/warnings.pl | 8 |
5 files changed, 37 insertions, 15 deletions
diff --git a/lib/warnings.pm b/lib/warnings.pm index 1bd2dc2825..4b634de4d4 100644 --- a/lib/warnings.pm +++ b/lib/warnings.pm @@ -5,7 +5,7 @@ package warnings; -our $VERSION = "1.52"; +our $VERSION = "1.53"; # Verify that we're called correctly so that warnings will work. # Can't use Carp, since Carp uses us! @@ -580,6 +580,9 @@ warnings - Perl pragma to control optional warnings use warnings; no warnings; + # Standard warnings are enabled by use v5.35 or above + use v5.35; + use warnings "all"; no warnings "uninitialized"; @@ -645,6 +648,9 @@ block has them disabled. In this case that means the assignment to the scalar C<$z> will trip the C<"Scalar value @x[0] better written as $x[0]"> warning, but the assignment to the scalar C<$y> will not. +All warnings are enabled automatically within the scope of +a C<L<use v5.35|perlfunc/use VERSION>> (or higher) declaration. + =head2 Default Warnings and Optional Warnings Before the introduction of lexical warnings, Perl had two classes of diff --git a/pod/perl.pod b/pod/perl.pod index 18f8cc0baf..d9ac3e1029 100644 --- a/pod/perl.pod +++ b/pod/perl.pod @@ -393,10 +393,13 @@ see L<perlvar> for more information. Using the C<use strict> pragma ensures that all variables are properly declared and prevents other misuses of legacy Perl features. +These are enabled by default within the scope of +C<L<use v5.12|perlfunc/use VERSION>> (or higher). -The C<use warnings> pragma produces some lovely diagnostics. One can -also use the B<-w> flag, but its use is normally discouraged, because -it gets applied to all executed Perl code, including that not under +The C<use warnings> pragma produces some lovely diagnostics. +It is enabled by default when you say C<use v5.35> (or higher). +One can also use the B<-w> flag, but its use is normally discouraged, +because it gets applied to all executed Perl code, including that not under your control. See L<perldiag> for explanations of all Perl's diagnostics. The C<use diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod index 2fe7404fc9..8227969f4f 100644 --- a/pod/perlfunc.pod +++ b/pod/perlfunc.pod @@ -9638,18 +9638,19 @@ L<C<use>|/use Module VERSION LIST>ing library modules that won't work with older versions of Perl. (We try not to do this more than we have to.) -C<use VERSION> also lexically enables all features available in the requested +C<use VERSION> lexically enables all features available in the requested version as defined by the L<feature> pragma, disabling any features not in the requested version's feature bundle. See L<feature>. -Similarly, if the specified Perl version is greater than or equal to +If the specified Perl version is greater than or equal to 5.12.0, strictures are enabled lexically as -with L<C<use strict>|strict>. Any explicit use of -C<use strict> or C<no strict> overrides C<use VERSION>, even if it comes -before it. Later use of C<use VERSION> -will override all behavior of a previous -C<use VERSION>, possibly removing the C<strict> and C<feature> added by -C<use VERSION>. C<use VERSION> does not -load the F<feature.pm> or F<strict.pm> +with L<C<use strict>|strict>. +Similarly, L<warnings> are enabled if C<VERSION> is 5.35.0 or higher. +Any explicit use of C<use strict> or C<no strict> overrides C<use VERSION>, +even if it comes before it. +Later use of C<use VERSION> will override all behavior of a previous +C<use VERSION>, possibly removing the C<strict>, C<warnings>, and C<feature> +added by C<use VERSION>. C<use VERSION> does not +load the F<feature.pm>, F<strict.pm>, or F<warnings.pm> files. The C<BEGIN> forces the L<C<require>|/require VERSION> and diff --git a/pod/perlintro.pod b/pod/perlintro.pod index c4a6d758f6..a56c4989e6 100644 --- a/pod/perlintro.pod +++ b/pod/perlintro.pod @@ -93,9 +93,15 @@ problems in your code. They check different things so you need both. A potential problem caught by C<use strict;> will cause your code to stop immediately when it is encountered, while C<use warnings;> will merely give a warning (like the command-line switch B<-w>) and let your code run. -To read more about them check their respective manual pages at L<strict> +To read more about them, check their respective manual pages at L<strict> and L<warnings>. +A C<L<use v5.35|perlfunc/use VERSION>> (or higher) declaration will +enable both C<strict> and C<warnings>: + + #!/usr/bin/perl + use v5.35; + =head2 Basic syntax overview A Perl script or program consists of one or more statements. These diff --git a/regen/warnings.pl b/regen/warnings.pl index 0987b8be32..056851f592 100644 --- a/regen/warnings.pl +++ b/regen/warnings.pl @@ -16,7 +16,7 @@ # # This script is normally invoked from regen.pl. -$VERSION = '1.52'; +$VERSION = '1.53'; BEGIN { require './regen/regen_lib.pl'; @@ -882,6 +882,9 @@ warnings - Perl pragma to control optional warnings use warnings; no warnings; + # Standard warnings are enabled by use v5.35 or above + use v5.35; + use warnings "all"; no warnings "uninitialized"; @@ -947,6 +950,9 @@ block has them disabled. In this case that means the assignment to the scalar C<$z> will trip the C<"Scalar value @x[0] better written as $x[0]"> warning, but the assignment to the scalar C<$y> will not. +All warnings are enabled automatically within the scope of +a C<L<use v5.35|perlfunc/use VERSION>> (or higher) declaration. + =head2 Default Warnings and Optional Warnings Before the introduction of lexical warnings, Perl had two classes of |