This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldiag: ‘Scalars leaked’ is a default warning
[perl5.git] / pod / perldiag.pod
index b4cfd12..868cbc1 100644 (file)
@@ -1449,13 +1449,13 @@ will match.
 
 This may be counterintuitive at times, as both these fail:
 
- chr(0x110000) =~ \p{ASCII_Hex_Digit=True}      # Fails.
- chr(0x110000) =~ \p{ASCII_Hex_Digit=False}     # Also fails!
+ chr(0x110000) =~ /\p{ASCII_Hex_Digit=True}/      # Fails.
+ chr(0x110000) =~ /\p{ASCII_Hex_Digit=False}/     # Also fails!
 
 and both these succeed:
 
- chr(0x110000) =~ \P{ASCII_Hex_Digit=True}      # Succeeds.
- chr(0x110000) =~ \P{ASCII_Hex_Digit=False}     # Also succeeds!
+ chr(0x110000) =~ /\P{ASCII_Hex_Digit=True}/      # Succeeds.
+ chr(0x110000) =~ /\P{ASCII_Hex_Digit=False}/     # Also succeeds!
 
 =item %s: Command not found
 
@@ -3308,6 +3308,14 @@ the meantime, try using scientific notation (e.g. "1e6" instead of
 a number.  This happens, for example with C<\o{}>, with no number between
 the braces.
 
+=item "my %s" used in sort comparison
+
+(W syntax) The package variables $a and $b are used for sort comparisons.
+You used $a or $b in as an operand to the C<< <=> >> or C<cmp> operator inside a
+sort comparison block, and the variable had earlier been declared as a
+lexical variable.  Either qualify the sort variable with the package
+name, or rename the lexical variable.
+
 =item Octal number > 037777777777 non-portable
 
 (W portable) The octal number you specified is larger than 2**32-1
@@ -3528,6 +3536,12 @@ an ACL related-function, but that function is not available on this
 platform.  Earlier checks mean that it should not be possible to
 enter this branch on this platform.
 
+=item panic: child pseudo-process was never scheduled
+
+(P) A child pseudo-process in the ithreads implementation on Windows
+was not scheduled within the time period allowed and therefore was not
+able to initialize properly.
+
 =item panic: ck_grep, type=%u
 
 (P) Failed an internal consistency check trying to compile a grep.
@@ -4245,7 +4259,7 @@ really a dirhandle.  Check your control flow.
 
 =item Scalars leaked: %d
 
-(W internal) Something went wrong in Perl's internal bookkeeping
+(S internal) Something went wrong in Perl's internal bookkeeping
 of scalars: not all scalar variables were deallocated by the time
 Perl exited.  What this usually indicates is a memory leak, which
 is of course bad, especially if the Perl program is intended to be
@@ -4473,6 +4487,12 @@ superfluous.
 (W signal) The signal handler named in %SIG doesn't, in fact, exist.
 Perhaps you put it into the wrong package?
 
+=item Slab leaked from cv %p
+
+(S) If you see this message, then something is seriously wrong with the
+internal bookkeeping of op trees.  An op tree needed to be freed after
+a compilation error, but could not be found, so it was leaked instead.
+
 =item Smart matching a non-overloaded object breaks encapsulation
 
 (F) You should not use the C<~~> operator on an object that does not
@@ -4524,6 +4544,14 @@ a block by itself.
 sense to try to declare one with a package qualifier on the front.  Use
 local() if you want to localize a package variable.
 
+=item "state %s" used in sort comparison
+
+(W syntax) The package variables $a and $b are used for sort comparisons.
+You used $a or $b in as an operand to the C<< <=> >> or C<cmp> operator inside a
+sort comparison block, and the variable had earlier been declared as a
+lexical variable.  Either qualify the sort variable with the package
+name, or rename the lexical variable.
+
 =item stat() on unopened filehandle %s
 
 (W unopened) You tried to use the stat() function on a filehandle that
@@ -4956,7 +4984,7 @@ you can turn off this warning by C<no warnings 'nonchar';>.
 
 =item Unicode surrogate U+%X is illegal in UTF-8
 
-(W utf8, surrogate) You had a UTF-16 surrogate in a context where they are
+(S utf8, 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
@@ -5181,6 +5209,18 @@ character to get your parentheses to balance.  See L<attributes>.
 compressed integer format and could not be converted to an integer.
 See L<perlfunc/pack>.
 
+=item Unterminated delimiter for here document
+
+(F) This message occurs when a here document label has an initial
+quotation mark but the final quotation mark is missing.  Perhaps
+you wrote:
+
+    <<"foo
+
+instead of:
+
+    <<"foo"
+
 =item Unterminated \g{...} pattern in regex; marked by <-- HERE in m/%s/
 
 (F) You missed a close brace on a \g{..} pattern (group reference) in