diff options
-rw-r--r-- | op.c | 1 | ||||
-rw-r--r-- | pod/perldiag.pod | 7 | ||||
-rw-r--r-- | pod/perlfunc.pod | 6 | ||||
-rw-r--r-- | t/lib/warnings/op | 11 |
4 files changed, 23 insertions, 2 deletions
@@ -3197,6 +3197,7 @@ Perl_package(pTHX_ OP *o) op_free(o); } else { + deprecate("\"package\" with no arguments"); sv_setpv(PL_curstname,"<none>"); PL_curstash = Nullhv; } diff --git a/pod/perldiag.pod b/pod/perldiag.pod index c754333040..65cde01c35 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -3868,6 +3868,13 @@ In code that currently says C<use AutoLoader; @ISA = qw(AutoLoader);> you should remove AutoLoader from @ISA and change C<use AutoLoader;> to C<use AutoLoader 'AUTOLOAD';>. +=item Use of "package" with no arguments is deprecated + +(D deprecated) You used the C<package> keyword without specifying a package +name. So no namespace is current at all. Using this can cause many +otherwise reasonable constructs to fail in baffling ways. C<use strict;> +instead. + =item Use of %s in printf format not supported (F) You attempted to use a feature of printf that is accessible from diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod index 1039cd0caa..6deeadb622 100644 --- a/pod/perlfunc.pod +++ b/pod/perlfunc.pod @@ -3404,8 +3404,10 @@ C<$::sail> is equivalent to C<$main::sail> (as well as to C<$main'sail>, still seen in older code). If NAMESPACE is omitted, then there is no current package, and all -identifiers must be fully qualified or lexicals. This is stricter -than C<use strict>, since it also extends to function names. +identifiers must be fully qualified or lexicals. However, you are +strongly advised not to make use of this feature. Its use can cause +unexpected behaviour, even crashing some versions of Perl. It is +deprecated, and will be removed from a future release. See L<perlmod/"Packages"> for more information about packages, modules, and classes. See L<perlsub> for other scoping issues. diff --git a/t/lib/warnings/op b/t/lib/warnings/op index 0079146ad3..d3a2d548fe 100644 --- a/t/lib/warnings/op +++ b/t/lib/warnings/op @@ -108,6 +108,9 @@ mkdir "foo", 777; umask 222; + Use of "package" with no arguments is deprecated + package; + Mandatory Warnings ------------------ Prototype mismatch: [cv_ckproto] @@ -958,3 +961,11 @@ mkdir "", 777; EXPECT Non-octal literal mode (777) specified at - line 3. (Did you mean 0777 instead?) +######## +# op.c +use warnings 'deprecated' ; +package; +no warnings 'deprecated' ; +package; +EXPECT +Use of "package" with no arguments is deprecated at - line 3. |