This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldiag: reflow ‘Missing braces on \N{}’ for 80 cols.
[perl5.git] / pod / perldiag.pod
index 871e0a2..54120b3 100644 (file)
@@ -526,6 +526,14 @@ check the return value of your socket() call?  See L<perlfunc/bind>.
 (W unopened) You tried binmode() on a filehandle that was never opened.
 Check your control flow and number of arguments.
 
+=item "\b{" is deprecated; use "\b\{" instead
+
+=item "\B{" is deprecated; use "\B\{" instead
+
+(W deprecated, regexp) Use of an unescaped "{" immediately following a
+C<\b> or C<\B> is now deprecated so as to reserve its use for Perl
+itself in a future release.
+
 =item Bit vector size > 32 non-portable
 
 (W portable) Using bit vector sizes larger than 32 is non-portable.
@@ -783,14 +791,14 @@ editor will have a way to help you find these characters.
 
 =item Can't find Unicode property definition "%s"
 
-(F) You may have tried to use C<\p> which means a Unicode property (for
-example C<\p{Lu}> matches all uppercase letters).  If you did mean to use a
-Unicode property, see
+(F) You may have tried to use C<\p> which means a Unicode
+property (for example C<\p{Lu}> matches all uppercase
+letters). If you did mean to use a Unicode property, see
 L<perluniprops/Properties accessible through \p{} and \P{}>
-for a complete list of available properties.
-If you didn't mean to use a Unicode property, escape the C<\p>, either
-by C<\\p> (just the C<\p>) or by C<\Q\p> (the rest of the string, until
-possible C<\E>).
+for a complete list of available properties. If you didn't
+mean to use a Unicode property, escape the C<\p>, either by C<\\p>
+(just the C<\p>) or by C<\Q\p> (the rest of the string, or
+until C<\E>).
 
 =item Can't fork: %s
 
@@ -810,12 +818,12 @@ Under VMS, access checks are done by filename, rather than by bits in
 the stat buffer, so that ACLs and other protections can be taken into
 account.  Unfortunately, Perl assumes that the stat buffer contains all
 the necessary information, and passes it, instead of the filespec, to
-the access checking routine.  It will try to retrieve the filespec using
+the access-checking routine.  It will try to retrieve the filespec using
 the device name and FID present in the stat buffer, but this works only
 if you haven't made a subsequent call to the CRTL stat() routine,
 because the device name is overwritten with each call.  If this warning
-appears, the name lookup failed, and the access checking routine gave up
-and returned FALSE, just to be conservative.  (Note: The access checking
+appears, the name lookup failed, and the access-checking routine gave up
+and returned FALSE, just to be conservative.  (Note: The access-checking
 routine knows about the Perl C<stat> operator and file tests, so you
 shouldn't ever see this warning in response to a Perl command; it arises
 only if some internal code takes stat buffers lightly.)
@@ -971,7 +979,7 @@ a NULL.
 =item Can't modify non-lvalue subroutine call
 
 (F) Subroutines meant to be used in lvalue context should be declared as
-such, see L<perlsub/"Lvalue subroutines">.
+such.  See L<perlsub/"Lvalue subroutines">.
 
 =item Can't msgrcv to read-only var
 
@@ -998,7 +1006,7 @@ the command line.
 =item Can't open a reference
 
 (W io) You tried to open a scalar reference for reading or writing,
-using the 3-arg open() syntax :
+using the 3-arg open() syntax:
 
     open FH, '>', $ref;
 
@@ -1081,7 +1089,7 @@ to reopen it to accept binary data.  Alas, it failed.
 
 (F|P) Error resolving overloading specified by a method name (as opposed
 to a subroutine reference): no such method callable via the package. If
-method name is C<???>, this is an internal error.
+the method name is C<???>, this is an internal error.
 
 =item Can't return %s from lvalue subroutine
 
@@ -1126,11 +1134,6 @@ with Perl, though, if you really want to do that.
 however, redefine it while it's running, and you can even undef the
 redefined subroutine while the old routine is running.  Go figure.
 
-=item Can't unshift
-
-(F) You tried to unshift an "unreal" array that can't be unshifted, such
-as the main Perl stack.
-
 =item Can't upgrade %s (%d) to %d
 
 (P) The internal sv_upgrade routine adds "members" to an SV, making it
@@ -1325,6 +1328,21 @@ uses the character values modulus 256 instead, as if you had provided:
 
    unpack("s", "\x{f3}b")
 
+=item "\c{" is deprecated and is more clearly written as ";"
+
+(D deprecated, syntax) The C<\cI<X>> construct is intended to be a way
+to specify non-printable characters.  You used it with a "{" which
+evaluates to ";", which is printable.  It is planned to remove the
+ability to specify a semi-colon this way in Perl 5.16.  Just use a
+semi-colon or a backslash-semi-colon without the "\c".
+
+=item "\c%c" is more clearly written simply as "%s"
+
+(W syntax) The C<\cI<X>> construct is intended to be a way to specify
+non-printable characters.  You used it for a printable one, which is better
+written as simply itself, perhaps preceded by a backslash for non-word
+characters.
+
 =item close() on unopened filehandle %s
 
 (W unopened) You tried to close a filehandle that was never opened.
@@ -1396,10 +1414,10 @@ on I<Mastering Regular Expressions>.)
 
 (W threads) Within a thread-enabled program, you tried to call
 cond_broadcast() on a variable which wasn't locked. The cond_broadcast()
-function  is used to wake up another thread that is waiting in a
+function is used to wake up another thread that is waiting in a
 cond_wait(). To ensure that the signal isn't sent before the other thread
-has a chance to enter the wait, it is usual for the signaling thread to
-first wait for a lock on variable. This lock attempt will only succeed
+has a chance to enter the wait, it is usual for the signaling thread
+first to wait for a lock on variable. This lock attempt will only succeed
 after the other thread has entered cond_wait() and thus relinquished the
 lock.
 
@@ -1407,10 +1425,10 @@ lock.
 
 (W threads) Within a thread-enabled program, you tried to call
 cond_signal() on a variable which wasn't locked. The cond_signal()
-function  is used to wake up another thread that is waiting in a
+function is used to wake up another thread that is waiting in a
 cond_wait(). To ensure that the signal isn't sent before the other thread
-has a chance to enter the wait, it is usual for the signaling thread to
-first wait for a lock on variable. This lock attempt will only succeed
+has a chance to enter the wait, it is usual for the signaling thread
+first to wait for a lock on variable. This lock attempt will only succeed
 after the other thread has entered cond_wait() and thus relinquished the
 lock.
 
@@ -1485,21 +1503,6 @@ valid magic number.
 you have also specified an explicit size for the string.  See
 L<perlfunc/pack>.
 
-=item "\c{" is deprecated and is more clearly written as ";"
-
-(D deprecated, syntax) The C<\cI<X>> construct is intended to be a way
-to specify non-printable characters.  You used it with a "{" which
-evaluates to ";", which is printable.  It is planned to remove the
-ability to specify a semi-colon this way in Perl 5.16.  Just use a
-semi-colon or a backslash-semi-colon without the "\c".
-
-=item "\c%c" is more clearly written simply as "%s"
-
-(W syntax) The C<\cI<X>> construct is intended to be a way to specify
-non-printable characters.  You used it for a printable one, which is better
-written as simply itself, perhaps preceded by a backslash for non-word
-characters.
-
 =item Deep recursion on subroutine "%s"
 
 (W recursion) This subroutine has called itself (directly or indirectly)
@@ -1536,10 +1539,10 @@ that triggers this error.
 =item Deprecated character in \N{...}; marked by <-- HERE  in \N{%s<-- HERE %s
 
 (D deprecated) Just about anything is legal for the C<...> in C<\N{...}>.
-But starting in 5.12, non-reasonable ones that don't look like names are
-deprecated.  A reasonable name begins with an alphabetic character and
-continues with any combination of alphanumerics, dashes, spaces, parentheses or
-colons.
+But starting in 5.12, non-reasonable ones that don't look like names
+are deprecated.  A reasonable name begins with an alphabetic character
+and continues with any combination of alphanumerics, dashes, spaces,
+parentheses or colons.
 
 =item Deprecated use of my() in false conditional
 
@@ -1599,7 +1602,7 @@ carried away.
 =item Died
 
 (F) You passed die() an empty string (the equivalent of C<die "">) or
-you called it with no args and both C<$@> and C<$_> were empty.
+you called it with no args and C<$@> was empty.
 
 =item Document contains no data
 
@@ -1695,10 +1698,11 @@ is unsafe.  See L<perlre/(?{ code })>, and L<perlsec>.
 
 (F) Perl tried to compile a regular expression containing the
 C<(?{ ... })> zero-width assertion at run time, as it would when the
-pattern contains interpolated values.  Since that is a security risk, it
-is not allowed.  If you insist, you may still do this by explicitly
-building the pattern from an interpolated string at run time and using
-that in an eval().  See L<perlre/(?{ code })>.
+pattern contains interpolated values.  Since that is a security risk,
+it is not allowed.  If you insist, you may still do this by using the
+C<re 'eval'> pragma or by explicitly building the pattern from an
+interpolated string at run time and using that in an eval().  See
+L<perlre/(?{ code })>.
 
 =item %s: Eval-group not allowed, use re 'eval'
 
@@ -1723,7 +1727,8 @@ variable and glob that.
 
 =item exec? I'm not *that* kind of operating system
 
-(F) The C<exec> function is not implemented in MacPerl. See L<perlport>.
+(F) The C<exec> function is not implemented on some systems, e.g., Symbian
+OS. See L<perlport>.
 
 =item Execution of %s aborted due to compilation errors.
 
@@ -1803,7 +1808,7 @@ is not possible.
 (W pack) Each line in an uuencoded string start with a length indicator
 which can't encode values above 63. So there is no point in asking for
 a line length bigger than that. Perl will behave as if you specified
-C<u63> as format.
+C<u63> as the format.
 
 =item Filehandle %s opened only for input
 
@@ -1816,10 +1821,10 @@ write the file, use ">" or ">>".  See L<perlfunc/open>.
 
 (W io) You tried to read from a filehandle opened only for writing, If
 you intended it to be a read/write filehandle, you needed to open it
-with "+<" or "+>" or "+>>" instead of with "<" or nothing.  If you
-intended only to read from the file, use "<".  See L<perlfunc/open>.
-Another possibility is that you attempted to open filedescriptor 0
-(also known as STDIN) for output (maybe you closed STDIN earlier?).
+with "+<" or "+>" or "+>>" instead of with ">".  If you intended only to
+read from the file, use "<".  See L<perlfunc/open>.  Another possibility
+is that you attempted to open filedescriptor 0 (also known as STDIN) for
+output (maybe you closed STDIN earlier?).
 
 =item Filehandle %s reopened as %s only for input
 
@@ -1935,14 +1940,14 @@ earlier in the line, and you really meant a "less than".
 
 =item gmtime(%f) too large
 
-(W overflow) You called C<gmtime> with an number that was larger than
+(W overflow) You called C<gmtime> with a number that was larger than
 it can reliably handle and C<gmtime> probably returned the wrong
 date. This warning is also triggered with nan (the special
 not-a-number value).
 
 =item gmtime(%f) too small
 
-(W overflow) You called C<gmtime> with an number that was smaller than
+(W overflow) You called C<gmtime> with a number that was smaller than
 it can reliably handle and C<gmtime> probably returned the wrong
 date. This warning is also triggered with nan (the special
 not-a-number value).
@@ -1959,9 +1964,8 @@ unspecified destination.  See L<perlfunc/goto>.
 
 =item ()-group starts with a count
 
-(F) A ()-group started with a count.  A count is
-supposed to follow something: a template character or a ()-group.
- See L<perlfunc/pack>.
+(F) A ()-group started with a count.  A count is supposed to follow
+something: a template character or a ()-group.  See L<perlfunc/pack>.
 
 =item %s had compilation errors.
 
@@ -1993,8 +1997,8 @@ without an intervening space.  For example, the two constructs:
  $a =~ m/$foo/sand $bar
  $a =~ m/$foo/s and $bar
 
-both currently mean the same thing, but it is planned to disallow the first form
-in Perl 5.16.  And,
+both currently mean the same thing, but it is planned to disallow the first
+form in Perl 5.16.  And,
 
  $a =~ m/$foo/and $bar
 
@@ -2041,7 +2045,7 @@ to your Perl administrator.
 =item Illegal character in prototype for %s : %s
 
 (W illegalproto) An illegal character was found in a prototype declaration.
-Legal characters in prototypes are $, @, %, *, ;, [, ], &, and \.
+Legal characters in prototypes are $, @, %, *, ;, [, ], &, \, and +.
 
 =item Illegal declaration of anonymous subroutine
 
@@ -2165,6 +2169,12 @@ C<$ENV{ENV}>, C<$ENV{BASH_ENV}> or C<$ENV{TERM}> are derived from data
 supplied (or potentially supplied) by the user.  The script must set
 the path to a known value, using trustworthy data.  See L<perlsec>.
 
+=item Integer overflow in format string for %s
+
+(F) The indexes and widths specified in the format string of C<printf()>
+or C<sprintf()> are too large.  The numbers must not overflow the size of
+integers for your architecture.
+
 =item Integer overflow in %s number
 
 (W overflow) The hexadecimal, octal or binary number you have specified
@@ -2177,12 +2187,6 @@ transparently promotes all numbers to a floating point representation
 internally--subject to loss of precision errors in subsequent
 operations.
 
-=item Integer overflow in format string for %s
-
-(F) The indexes and widths specified in the format string of C<printf()>
-or C<sprintf()> are too large.  The numbers must not overflow the size of
-integers for your architecture.
-
 =item Integer overflow in version
 
 (F) Some portion of a version initialization is too large for the
@@ -2246,9 +2250,10 @@ escape was discovered.
 
 =item Invalid mro name: '%s'
 
-(F) You tried to C<mro::set_mro("classname", "foo")>
-or C<use mro 'foo'>, where C<foo> is not a valid method resolution order (MRO).
-(Currently, the only valid ones are C<dfs> and C<c3>). See L<mro>.
+(F) You tried to C<mro::set_mro("classname", "foo")> or C<use mro 'foo'>,
+where C<foo> is not a valid method resolution order (MRO).  Currently,
+the only valid ones supported are C<dfs> and C<c3>, unless you have loaded
+a module that is a MRO plugin.  See L<mro> and L<perlmroapi>.
 
 =item Invalid [] range "%s" in regex; marked by <-- HERE in m/%s/
 
@@ -2272,8 +2277,8 @@ See L<attributes>.
 
 =item Invalid separator character %s in PerlIO layer specification %s
 
-(W layer) When pushing layers onto the Perl I/O system, something other than a
-colon or whitespace was seen between the elements of a layer list.
+(W layer) When pushing layers onto the Perl I/O system, something other
+than a colon or whitespace was seen between the elements of a layer list.
 If the previous attribute had a parenthesised parameter list, perhaps that
 list was terminated too soon.
 
@@ -2298,9 +2303,9 @@ silently ignored.
 (F)  A version number did not meet the "lax" criteria for versions.
 A "lax" version number is a positive decimal number (integer or
 decimal-fraction) without exponentiation or else a dotted-decimal
-v-string. If the v-string has less than three components, it must have a
-leading 'v' character.  Otherwise, the leading 'v' is optional.  Both
-decimal and dotted-decimal versions may have a trailing "alpha"
+v-string. If the v-string has fewer than three components, it must
+have a leading 'v' character.  Otherwise, the leading 'v' is optional.
+Both decimal and dotted-decimal versions may have a trailing "alpha"
 component separated by an underscore character after a fractional or
 dotted-decimal component.  The parenthesized text indicates which
 criteria were not met.  See the L<version> module for more details on
@@ -2320,34 +2325,36 @@ strange for a machine that supports C.
 =item ioctl() on unopened %s
 
 (W unopened) You tried ioctl() on a filehandle that was never opened.
-Check you control flow and number of arguments.
+Check your control flow and number of arguments.
 
 =item IO layers (like '%s') unavailable
 
 (F) Your Perl has not been configured to have PerlIO, and therefore
-you cannot use IO layers.  To have PerlIO Perl must be configured
+you cannot use IO layers.  To have PerlIO, Perl must be configured
 with 'useperlio'.
 
 =item IO::Socket::atmark not implemented on this architecture
 
 (F) Your machine doesn't implement the sockatmark() functionality,
-neither as a system call or an ioctl call (SIOCATMARK).
+neither as a system call nor an ioctl call (SIOCATMARK).
 
 =item $* is no longer supported
 
-(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<$*>, 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.
 
 Instead of using C<$*> you should use the C</m> (and maybe C</s>) regexp
-modifiers. (In older versions: when C<$*> was set to a true value then all regular
-expressions behaved as if they were written using C</m>.)
+modifiers. You can enable C</m> for a lexical scope (even a whole file)
+with C<use re '/m'>. (In older versions: when C<$*> was set to a true value
+then all regular expressions behaved as if they were written using C</m>.)
 
 =item $# is no longer supported
 
-(D deprecated, syntax) The special variable C<$#>, deprecated in older perls, has
-been removed as of 5.9.3 and is no longer supported. You should use the
-printf/sprintf functions instead.
+(D deprecated, syntax) The special variable C<$#>, deprecated in older
+perls, has been removed as of 5.9.3 and is no longer supported. You
+should use the printf/sprintf functions instead.
 
 =item `%s' is not a code reference
 
@@ -2396,11 +2403,10 @@ an undefined value for the length. See L<perlfunc/pack>.
 =item Lexing code attempted to stuff non-Latin-1 character into Latin-1 input
 
 (F) An extension is attempting to insert text into the current parse
-(using L<lex_stuff_pvn_flags|perlapi/lex_stuff_pvn_flags> or similar), but
-tried to insert a character that couldn't be part of the current input.
-This is an inherent pitfall of the stuffing mechanism, and one of the
-reasons to avoid it.  Where it is necessary to stuff, stuffing only
-plain ASCII is recommended.
+(using L<lex_stuff_pvn_flags|perlapi/lex_stuff_pvn_flags> or similar), but tried to insert a character
+that couldn't be part of the current input. This is an inherent pitfall
+of the stuffing mechanism, and one of the reasons to avoid it.  Where it
+is necessary to stuff, stuffing only plain ASCII is recommended.
 
 =item Lexing code internal error (%s)
 
@@ -2415,14 +2421,14 @@ L<perlfunc/listen>.
 
 =item localtime(%f) too large
 
-(W overflow) You called C<localtime> with an number that was larger
+(W overflow) You called C<localtime> with a number that was larger
 than it can reliably handle and C<localtime> probably returned the
 wrong date. This warning is also triggered with nan (the special
 not-a-number value).
 
 =item localtime(%f) too small
 
-(W overflow) You called C<localtime> with an number that was smaller
+(W overflow) You called C<localtime> with a number that was smaller
 than it can reliably handle and C<localtime> probably returned the
 wrong date. This warning is also triggered with nan (the special
 not-a-number value).
@@ -2461,14 +2467,14 @@ the definition.
 values cannot be returned in subroutines used in lvalue context.  See
 L<perlsub/"Lvalue subroutines">.
 
-=item Malformed integer in [] in  pack
+=item Malformed integer in [] in pack
 
-(F) Between the  brackets enclosing a numeric repeat count only digits
+(F) Between the brackets enclosing a numeric repeat count only digits
 are permitted.  See L<perlfunc/pack>.
 
 =item Malformed integer in [] in unpack
 
-(F) Between the  brackets enclosing a numeric repeat count only digits
+(F) Between the brackets enclosing a numeric repeat count only digits
 are permitted.  See L<perlfunc/pack>.
 
 =item Malformed PERLLIB_PREFIX
@@ -2508,37 +2514,29 @@ message.
 
 See also L<Encode/"Handling Malformed Data">.
 
-=item Malformed UTF-16 surrogate
-
-(F) Perl thought it was reading UTF-16 encoded character data but while
-doing it Perl met a malformed Unicode surrogate.
-
 =item Malformed UTF-8 returned by \N
 
 (F) The charnames handler returned malformed UTF-8.
 
-=item Malformed UTF-8 string in pack
+=item Malformed UTF-8 string in '%c' format in unpack
 
-(F) You tried to pack something that didn't comply with UTF-8 encoding
+(F) You tried to unpack something that didn't comply with UTF-8 encoding
 rules and perl was unable to guess how to make more progress.
 
-=item Malformed UTF-8 string in unpack
+=item Malformed UTF-8 string in pack
 
-(F) You tried to unpack something that didn't comply with UTF-8 encoding
+(F) You tried to pack something that didn't comply with UTF-8 encoding
 rules and perl was unable to guess how to make more progress.
 
-=item Malformed UTF-8 string in '%c' format in unpack
+=item Malformed UTF-8 string in unpack
 
 (F) You tried to unpack something that didn't comply with UTF-8 encoding
 rules and perl was unable to guess how to make more progress.
 
-=item Maximal count of pending signals (%u) exceeded
+=item Malformed UTF-16 surrogate
 
-(F) Perl aborted due to a too high number of signals pending. This
-usually indicates that your operating system tried to deliver signals
-too fast (with a very high priority), starving the perl process from
-resources it would need to reach a point where it can process signals
-safely. (See L<perlipc/"Deferred Signals (Safe Signals)">.)
+(F) Perl thought it was reading UTF-16 encoded character data but while
+doing it Perl met a malformed Unicode surrogate.
 
 =item %s matches null string many times in regex; marked by <-- HERE in m/%s/
 
@@ -2547,6 +2545,14 @@ regular expression engine didn't specifically check for that.  The <-- HERE
 shows in the regular expression about where the problem was discovered.
 See L<perlre>.
 
+=item Maximal count of pending signals (%u) exceeded
+
+(F) Perl aborted due to too high a number of signals pending. This
+usually indicates that your operating system tried to deliver signals
+too fast (with a very high priority), starving the perl process from
+resources it would need to reach a point where it can process signals
+safely. (See L<perlipc/"Deferred Signals (Safe Signals)">.)
+
 =item "%s" may clash with future reserved word
 
 (W) This warning may be due to running a perl5 script through a perl4
@@ -2592,10 +2598,10 @@ immediately after the switch, without intervening spaces.
 =item Missing braces on \N{}
 
 (F) Wrong syntax of character name literal C<\N{charname}> within
-double-quotish context.  This can also happen when there is a space (or
-comment) between the C<\N> and the C<{> in a regex with the C</x> modifier.
-This modifier does not change the requirement that the brace immediately follow
-the C<\N>.
+double-quotish context.  This can also happen when there is a space
+(or comment) between the C<\N> and the C<{> in a regex with the C</x> modifier.
+This modifier does not change the requirement that the brace immediately
+follow the C<\N>.
 
 =item Missing braces on \o{}