.
but in fact the local() currently has no effect. This may change at
some point in the future, but in the meantime such code is discouraged.
-=item Useless (?%s) - use /%s modifier in regex; marked by <-- HERE in m/%s/
+=item Useless (?%s) - use /%s modifier in regex; marked by S<<-- HERE> in
+m/%s/
(W regexp) You have used an internal modifier such as (?o) that has no
meaning unless applied to the entire regexp:
@@ -5807,6 +6062,17 @@ will have an effect, so remove them from your code.
(W misc) You have a \E in a double-quotish string without a C<\U>,
C<\L> or C<\Q> preceding it.
+=item Useless use of greediness modifier '%c' in regex; marked by S<<-- HERE> in m/%s/
+
+(W regexp) You specified something like these:
+
+ qr/a{3}?/
+ qr/b{1,1}+/
+
+The C<"?"> and C<"+"> don't have any effect, as they modify whether to
+match more or fewer when there is a choice, and by specifying to match
+exactly a given numer, there is no room left for a choice.
+
=item Useless use of %s in void context
(W void) You did something without a side effect in a context that does
@@ -5847,7 +6113,7 @@ since they are often used in statements like
String constants that would normally evaluate to 0 or 1 are warned
about.
-=item Useless use of (?-p) in regex; marked by <-- HERE in m/%s/
+=item Useless use of (?-p) in regex; marked by S<<-- HERE> in m/%s/
(W regexp) The C modifier cannot be turned off once set. Trying to do
so is futile.
@@ -5888,11 +6154,6 @@ is deprecated. See L.
(D deprecated) You are now encouraged to use the explicitly quoted
form if you wish to use an empty line as the terminator of the here-document.
-=item Use of comma-less variable list is deprecated
-
-(D deprecated) The values you give to a format should be
-separated by commas, not just aligned on a line.
-
=item Use of chdir('') or chdir(undef) as chdir() deprecated
(D deprecated) chdir() with no arguments is documented to change to
@@ -5914,11 +6175,16 @@ modifier is not presently meaningful in substitutions.
use the /g modifier. Currently, /c is meaningful only when /g is
used. (This may change in the future.)
+=item Use of comma-less variable list is deprecated
+
+(D deprecated) The values you give to a format should be
+separated by commas, not just aligned on a line.
+
=item Use of each() on hash after insertion without resetting hash iterator results in undefined behavior
-(S internal) The behavior of C after insertion is undefined; it may
-skip items, or visit items more than once. Consider using C instead
-of C.
+(S internal) The behavior of C after insertion is undefined;
+it may skip items, or visit items more than once. Consider using
+C instead of C.
=item Use of := for an empty attribute list is not allowed
@@ -5994,6 +6260,13 @@ only C. This usually means there's a better way to do it in Perl.
generally because there's a better way to do it, and also because the
old way has bad side effects.
+=item Use of literal control characters in variable names is deprecated
+
+(D deprecated) Using literal control characters in the source to refer
+to the ^FOO variables, like C<$^X> and C<${^GLOBAL_PHASE}> is now
+deprecated. This only affects code like C<$\cT>, where \cT is a control in
+the source code: C<${"\cT"}> and C<$^T> remain valid.
+
=item Use of -l on filehandle%s
(W io) A filehandle represents an opened file, and when you opened the file
@@ -6066,7 +6339,8 @@ optimized into C<"that " . $foo>, and the warning will refer to the
C operator, even though there is no C<.> in
your program.
-=item Use \x{...} for more than two hex characters in regex; marked by <-- HERE in m/%s/
+=item Use \x{...} for more than two hex characters in regex; marked by
+S<<-- HERE> in m/%s/
(F) In a regular expression, you said something like
@@ -6097,7 +6371,7 @@ allow this syntax, but shouldn't have. It is now deprecated,
and will be removed in a future version.
=item Using just the first character returned by \N{} in character class in
-regex; marked by <-- HERE in m/%s/
+regex; marked by S<<-- HERE> in m/%s/
(W regexp) A charnames handler may return a sequence of more than one
character. Currently all but the first one are discarded when used in
@@ -6112,7 +6386,7 @@ modified string is usually not particularly useful.)
=item UTF-16 surrogate U+%X
-(S utf8, surrogate) You had a UTF-16 surrogate in a context where they are
+(S surrogate) You had a UTF-16 surrogate in a context where they are
not considered acceptable. These code points, between U+D800 and
U+DFFF (inclusive), are used by Unicode only for UTF-16. However, Perl
internally allows all unsigned integer code points (up to the size limit
@@ -6137,6 +6411,14 @@ C operator.
longer than 1024 characters. The return value has been truncated to
1024 characters.
+=item values on reference is experimental
+
+(S experimental::autoderef) C with a scalar argument is experimental
+and may change or be removed in a future Perl version. If you want to
+take the risk of using this feature, simply disable this warning:
+
+ no warnings "experimental::autoderef";
+
=item Variable "%s" is not available
(W closure) During compilation, an inner named subroutine or eval is
@@ -6216,14 +6498,14 @@ are automatically rebound to the current values of such variables.
(S printf) The %vd (s)printf format does not support version objects
with alpha parts.
-=item Verb pattern '%s' has a mandatory argument in regex; marked by <-- HERE
-in m/%s/
+=item Verb pattern '%s' has a mandatory argument in regex; marked by
+S<<-- HERE> in m/%s/
(F) You used a verb pattern that requires an argument. Supply an
argument or check that you are using the right verb.
-=item Verb pattern '%s' may not have an argument in regex; marked by <-- HERE
-in m/%s/
+=item Verb pattern '%s' may not have an argument in regex; marked by
+S<<-- HERE> in m/%s/
(F) You used a verb pattern that is not allowed an argument. Remove the
argument or check that you are using the right verb.
@@ -6302,9 +6584,9 @@ before now. Check your control flow.
=item %s "\x%X" does not map to Unicode
-(F) When reading in different encodings, Perl tries to map
-everything into Unicode characters. The bytes you read in
-are not legal in this encoding. For example
+(S utf8) When reading in different encodings, Perl tries to
+map everything into Unicode characters. The bytes you read
+in are not legal in this encoding. For example
utf8 "\xE4" does not map to Unicode
@@ -6341,6 +6623,14 @@ what you want, put an & in front.)
not get any randomness out of your system. This usually indicates
Something Very Wrong.
+=item Zero length \N{} in regex; marked by S<<-- HERE> in m/%s/
+
+(F) Named Unicode character escapes C<(\N{...})> may return a zero-length
+sequence. Such an escape was used in an extended character class, i.e.
+C<(?[...])>, which is not permitted. Check that the correct escape has
+been used, and the correct charnames handler is in scope. The S<<-- HERE>
+shows whereabouts in the regular expression the problem was discovered.
+
=back
=head1 SEE ALSO