add ck_sysread() for better sysread/read/recv sanity
[p5sagit/p5-mst-13.2.git] / pod / perldiag.pod
index 841be54..7c8ab3d 100644 (file)
@@ -321,6 +321,11 @@ system malloc().
 (F) A field name of a typed variable was looked up in the %FIELDS
 hash, but the index found was not legal, i.e. less than 1.
 
+=item Bad index while coercing array into hash
+
+(F) The index looked up in the hash found as 0'th element of the array
+is not legal.  Index values must be at 1 or greater.
+
 =item Bad name after %s::
 
 (F) You started to name a symbol by using a package prefix, and then didn't
@@ -497,6 +502,12 @@ but then $foo no longer contains a glob.
 (F) Certain types of SVs, in particular real symbol table entries
 (typeglobs), can't be forced to stop being what they are.
 
+=item Can't coerce array into hash
+
+(F) You used an array where a hash was expected, but the array has no
+information on how to map from keys to array indices.  You can do that
+only with arrays that have a hash reference at index 0.
+
 =item Can't create pipe mailbox
 
 (P) An error peculiar to VMS.  The process is suffering from exhausted quotas
@@ -1606,6 +1617,12 @@ your system.
 (F) The argument to B<-I> must follow the B<-I> immediately with no
 intervening space.
 
+=item No such array field
+
+(F) You tried to access an array as a hash, but the field name used is
+not defined.  The hash at index 0 should map all valid field names to
+array indices for that to work.
+
 =item No such field "%s" in variable %s of type %s
 
 (F) You tried to access a field of a typed variable where the type
@@ -1742,7 +1759,7 @@ will extend the buffer and zero pad the new area.
 
 (S) An internal warning that the grammar is screwed up.
 
-=item Operation `%s': no method found,%s
+=item Operation `%s': no method found, %s
 
 (F) An attempt was made to perform an overloaded operation for which
 no handler was defined.  While some handlers can be autogenerated in
@@ -2341,6 +2358,21 @@ may break this.
        eval "sub name { ... }";
     }
 
+=item Subroutine %s hidden by keyword; use ampersand
+
+(W) You are trying to call a subroutine that has the same name as a
+keyword.  However, because the subroutine is not imported and
+you're not using an ampersand, Perl won't call the subroutine.
+
+To force a subroutine call, either put an ampersand before the
+subroutine name, or qualify the name with its package.  Alternatively,
+you can import the subroutine (or pretend that it's imported with the
+C<use subs> pragma).
+
+If the Perl operator is what you want, then eliminate this warning by
+using the CORE:: prefix on the operator (e.g. CORE::log($x)) or by
+declaring the subroutine to be an object method (see L<attrs>).
+
 =item Substitution loop
 
 (P) The substitution was looping infinitely.  (Obviously, a
@@ -2747,6 +2779,15 @@ 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 reserved word "%s" is deprecated
+
+(D) The indicated bareword is a reserved word.  Future versions of perl
+may use it as a keyword, so you're better off either explicitly quoting
+the word in a manner appropriate for its context of use, or using a
+different name altogether.  The warning can be suppressed for subroutine
+names by either adding a C<&> prefix, or using a package qualifier,
+e.g. C<&our()>, or C<Foo::our()>.
+
 =item Use of %s is deprecated
 
 (D) The construct indicated is no longer recommended for use, generally