Change the warning for $* to add ", and will become a syntax error".
authorNicholas Clark <nick@ccl4.org>
Wed, 20 Mar 2013 08:23:49 +0000 (09:23 +0100)
committerNicholas Clark <nick@ccl4.org>
Thu, 21 Mar 2013 08:13:52 +0000 (09:13 +0100)
The intent is that $*, @*, %*, &* and ** stop being parsed as punctuation
variables, freeing up the syntax for other use (possibly "splats").

gv.c
pod/perldelta.pod
pod/perldiag.pod
t/lib/warnings/2use
t/lib/warnings/gv

index 143323d..7e954d8 100644 (file)
--- a/gv.c
+++ b/gv.c
@@ -1639,11 +1639,14 @@ Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN full_len, I32 flags,
                else if (*name == '-' || *name == '+')
                    require_tie_mod(gv, name, newSVpvs("Tie::Hash::NamedCapture"), "TIEHASH", 0);
               } else if (sv_type == SVt_PV) {
-                  if (*name == '*' || *name == '#') {
-                      /* diag_listed_as: $* is no longer supported */
+                  if (*name == '*') {
                       Perl_ck_warner_d(aTHX_ packWARN2(WARN_DEPRECATED,
                                                        WARN_SYNTAX),
-                                       "$%c is no longer supported", *name);
+                                       "$* is no longer supported, and will become a syntax error");
+                  } else if (*name == '#') {
+                      Perl_ck_warner_d(aTHX_ packWARN2(WARN_DEPRECATED,
+                                                       WARN_SYNTAX),
+                                       "$# is no longer supported");
                   }
               }
              if (sv_type==SVt_PV || sv_type==SVt_PVGV) {
@@ -1934,11 +1937,14 @@ Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN full_len, I32 flags,
             break;
        }
        case '*':               /* $* */
+           if (sv_type == SVt_PV)
+               Perl_ck_warner_d(aTHX_ packWARN2(WARN_DEPRECATED, WARN_SYNTAX),
+                                "$* is no longer supported, and will become a syntax error");
+           break;
        case '#':               /* $# */
            if (sv_type == SVt_PV)
-               /* diag_listed_as: $* is no longer supported */
                Perl_ck_warner_d(aTHX_ packWARN2(WARN_DEPRECATED, WARN_SYNTAX),
-                                "$%c is no longer supported", *name);
+                                "$# is no longer supported");
            break;
        case '\010':    /* $^H */
            {
index 3bce5f4..1a17400 100644 (file)
@@ -202,7 +202,7 @@ XXX L<message|perldiag/"message">
 
 =item *
 
-L<$* is no longer supported|perldiag/"$* is no longer supported">
+L<$* is no longer supported, and will become a syntax error|perldiag/"$* is no longer supported, and will become a syntax error">
 
 The warning that use of C<$*> and C<$#> is no longer supported is now
 generated for every location that references them.  Previously it would fail
index d9ebe57..069e1aa 100644 (file)
@@ -2602,12 +2602,16 @@ with 'useperlio'.
 (F) Your machine doesn't implement the sockatmark() functionality,
 neither as a system call nor an ioctl call (SIOCATMARK).
 
-=item $* is no longer supported
+=item $* is no longer supported, and will become a syntax error
 
-(D deprecated, syntax) The special variable C<$*>, deprecated in older
-perls, has been removed as of 5.9.0 and is no longer supported.  In
-previous versions of perl the use of C<$*> enabled or disabled multi-line
-matching within a string.
+(D deprecated, syntax) The special variable C<$*>, which has had no
+effect since v5.10.0, will be removed soon.  Currently code which mentions
+this variable compiles with this warning, but the variable is no longer
+magical, hence reads and writes have no side effects.  In future such code
+will fail to compile with a syntax error.
+
+Prior to v5.10.0 the use of C<$*> enabled or disabled multi-line matching
+within a string.
 
 Instead of using C<$*> you should use the C</m> (and maybe C</s>) regexp
 modifiers.  You can enable C</m> for a lexical scope (even a whole file)
index c0d203a..6c7f56f 100644 (file)
@@ -365,7 +365,7 @@ $*;
 use warnings "void";
 $#;
 EXPECT
-$* is no longer supported at - line 3.
+$* is no longer supported, and will become a syntax error at - line 3.
 $# is no longer supported at - line 5.
 Useless use of a variable in void context at - line 5.
 ########
@@ -375,5 +375,5 @@ $*;
 no warnings "void";
 $#;
 EXPECT
-$* is no longer supported at - line 3.
+$* is no longer supported, and will become a syntax error at - line 3.
 $# is no longer supported at - line 5.
index 6b022e1..1618e40 100644 (file)
@@ -60,7 +60,7 @@ $a = ${"#"};
 $a = ${"*"};
 EXPECT
 $# is no longer supported at - line 2.
-$* is no longer supported at - line 3.
+$* is no longer supported, and will become a syntax error at - line 3.
 ########
 # gv.c
 $a = ${#};
@@ -70,7 +70,7 @@ $a = ${#};
 $a = ${*};
 EXPECT
 $# is no longer supported at - line 2.
-$* is no longer supported at - line 3.
+$* is no longer supported, and will become a syntax error at - line 3.
 ########
 # gv.c
 $a = $#;
@@ -88,11 +88,11 @@ $a = \$#;
 $a = \$*;
 EXPECT
 $# is no longer supported at - line 2.
-$* is no longer supported at - line 3.
+$* is no longer supported, and will become a syntax error at - line 3.
 $# is no longer supported at - line 4.
-$* is no longer supported at - line 5.
+$* is no longer supported, and will become a syntax error at - line 5.
 $# is no longer supported at - line 6.
-$* is no longer supported at - line 7.
+$* is no longer supported, and will become a syntax error at - line 7.
 ########
 # gv.c
 @a = @#;
@@ -101,7 +101,7 @@ $a = $#;
 $a = $*;
 EXPECT
 $# is no longer supported at - line 4.
-$* is no longer supported at - line 5.
+$* is no longer supported, and will become a syntax error at - line 5.
 ########
 # gv.c
 $a = $#;
@@ -110,7 +110,7 @@ $a = $*;
 @a = @*;
 EXPECT
 $# is no longer supported at - line 2.
-$* is no longer supported at - line 3.
+$* is no longer supported, and will become a syntax error at - line 3.
 ########
 # gv.c
 use warnings 'syntax' ;