perldiag.pod

来自「ARM上的如果你对底层感兴趣」· POD 代码 · 共 1,753 行 · 第 1/5 页

POD
1,753
字号
of times you've called C<fork> and C<exec>, to determine
whether the current call to C<exec> should affect the current
script or a subprocess (see L<perlvms/exec>).  Somehow, this count
has become scrambled, so Perl is making a guess and treating
this C<exec> as a request to terminate the Perl script
and execute the specified command.

=item internal disaster in regexp

(P) Something went badly wrong in the regular expression parser.

=item internal error: glob failed

(P) Something went wrong with the external program(s) used for C<glob>
and C<E<lt>*.cE<gt>>.  This may mean that your csh (C shell) is
broken.  If so, you should change all of the csh-related variables in
config.sh:  If you have tcsh, make the variables refer to it as if it
were csh (e.g. C<full_csh='/usr/bin/tcsh'>); otherwise, make them all
empty (except that C<d_csh> should be C<'undef'>) so that Perl will
think csh is missing.  In either case, after editing config.sh, run
C<./Configure -S> and rebuild Perl.

=item internal urp in regexp at /%s/

(P) Something went badly awry in the regular expression parser.

=item invalid [] range in regexp

(F) The range specified in a character class had a minimum character
greater than the maximum character.  See L<perlre>.

=item Invalid conversion in %s: "%s"

(W) Perl does not understand the given format conversion.
See L<perlfunc/sprintf>.

=item Invalid type in pack: '%s'

(F) The given character is not a valid pack type.  See L<perlfunc/pack>.
(W) The given character is not a valid pack type but used to be silently
ignored.

=item Invalid type in unpack: '%s'

(F) The given character is not a valid unpack type.  See L<perlfunc/unpack>.
(W) The given character is not a valid unpack type but used to be silently
ignored.

=item ioctl is not implemented

(F) Your machine apparently doesn't implement ioctl(), which is pretty
strange for a machine that supports C.

=item junk on end of regexp

(P) The regular expression parser is confused.

=item Label not found for "last %s"

(F) You named a loop to break out of, but you're not currently in a
loop of that name, not even if you count where you were called from.
See L<perlfunc/last>.

=item Label not found for "next %s"

(F) You named a loop to continue, but you're not currently in a loop of
that name, not even if you count where you were called from.  See
L<perlfunc/last>.

=item Label not found for "redo %s"

(F) You named a loop to restart, but you're not currently in a loop of
that name, not even if you count where you were called from.  See
L<perlfunc/last>.

=item listen() on closed fd

(W) You tried to do a listen on a closed socket.  Did you forget to check
the return value of your socket() call?  See L<perlfunc/listen>.

=item Method for operation %s not found in package %s during blessing

(F) An attempt was made to specify an entry in an overloading table that
doesn't resolve to a valid subroutine.  See L<overload>.

=item Might be a runaway multi-line %s string starting on line %d

(S) An advisory indicating that the previous error may have been caused
by a missing delimiter on a string or pattern, because it eventually
ended earlier on the current line.

=item Misplaced _ in number

(W) An underline in a decimal constant wasn't on a 3-digit boundary.

=item Missing $ on loop variable

(F) Apparently you've been programming in B<csh> too much.  Variables are always
mentioned with the $ in Perl, unlike in the shells, where it can vary from
one line to the next.

=item Missing comma after first argument to %s function

(F) While certain functions allow you to specify a filehandle or an
"indirect object" before the argument list, this ain't one of them.

=item Missing operator before %s?

(S) This is an educated guess made in conjunction with the message "%s
found where operator expected".  Often the missing operator is a comma.

=item Missing right bracket

(F) The lexer counted more opening curly brackets (braces) than closing ones.
As a general rule, you'll find it's missing near the place you were last
editing.

=item Modification of a read-only value attempted

(F) You tried, directly or indirectly, to change the value of a
constant.  You didn't, of course, try "2 = 1", because the compiler
catches that.  But an easy way to do the same thing is:

    sub mod { $_[0] = 1 }
    mod(2);

Another way is to assign to a substr() that's off the end of the string.

=item Modification of non-creatable array value attempted, subscript %d

(F) You tried to make an array value spring into existence, and the
subscript was probably negative, even counting from end of the array
backwards.

=item Modification of non-creatable hash value attempted, subscript "%s"

(P) You tried to make a hash value spring into existence, and it couldn't
be created for some peculiar reason.

=item Module name must be constant

(F) Only a bare module name is allowed as the first argument to a "use".

=item msg%s not implemented

(F) You don't have System V message IPC on your system.

=item Multidimensional syntax %s not supported

(W) Multidimensional arrays aren't written like C<$foo[1,2,3]>.  They're written
like C<$foo[1][2][3]>, as in C.

=item Name "%s::%s" used only once: possible typo

(W) Typographical errors often show up as unique variable names.
If you had a good reason for having a unique name, then just mention
it again somehow to suppress the message.  The C<use vars> pragma is
provided for just this purpose.

=item Negative length

(F) You tried to do a read/write/send/recv operation with a buffer length
that is less than 0.  This is difficult to imagine.

=item nested *?+ in regexp

(F) You can't quantify a quantifier without intervening parentheses.  So
things like ** or +* or ?* are illegal.

Note, however, that the minimal matching quantifiers, C<*?>, C<+?>, and C<??> appear
to be nested quantifiers, but aren't.  See L<perlre>.

=item No #! line

(F) The setuid emulator requires that scripts have a well-formed #! line
even on machines that don't support the #! construct.

=item No %s allowed while running setuid

(F) Certain operations are deemed to be too insecure for a setuid or setgid
script to even be allowed to attempt.  Generally speaking there will be
another way to do what you want that is, if not secure, at least securable.
See L<perlsec>.

=item No B<-e> allowed in setuid scripts

(F) A setuid script can't be specified by the user.

=item No comma allowed after %s

(F) A list operator that has a filehandle or "indirect object" is not
allowed to have a comma between that and the following arguments.
Otherwise it'd be just another one of the arguments.

One possible cause for this is that you expected to have imported a
constant to your name space with B<use> or B<import> while no such
importing took place, it may for example be that your operating system
does not support that particular constant. Hopefully you did use an
explicit import list for the constants you expect to see, please see
L<perlfunc/use> and L<perlfunc/import>. While an explicit import list
would probably have caught this error earlier it naturally does not
remedy the fact that your operating system still does not support that
constant. Maybe you have a typo in the constants of the symbol import
list of B<use> or B<import> or in the constant name at the line where
this error was triggered?

=item No command into which to pipe on command line

(F) An error peculiar to VMS.  Perl handles its own command line redirection,
and found a '|' at the end of the command line, so it doesn't know where you
want to pipe the output from this command.

=item No DB::DB routine defined

(F) The currently executing code was compiled with the B<-d> switch,
but for some reason the perl5db.pl file (or some facsimile thereof)
didn't define a routine to be called at the beginning of each
statement.  Which is odd, because the file should have been required
automatically, and should have blown up the require if it didn't parse
right.

=item No dbm on this machine

(P) This is counted as an internal error, because every machine should
supply dbm nowadays, because Perl comes with SDBM.  See L<SDBM_File>.

=item No DBsub routine

(F) The currently executing code was compiled with the B<-d> switch,
but for some reason the perl5db.pl file (or some facsimile thereof)
didn't define a DB::sub routine to be called at the beginning of each
ordinary subroutine call.

=item No error file after 2E<gt> or 2E<gt>E<gt> on command line

(F) An error peculiar to VMS.  Perl handles its own command line redirection,
and found a '2E<gt>' or a '2E<gt>E<gt>' on the command line, but can't find
the name of the file to which to write data destined for stderr.

=item No input file after E<lt> on command line

(F) An error peculiar to VMS.  Perl handles its own command line redirection,
and found a 'E<lt>' on the command line, but can't find the name of the file
from which to read data for stdin.

=item No output file after E<gt> on command line

(F) An error peculiar to VMS.  Perl handles its own command line redirection,
and found a lone 'E<gt>' at the end of the command line, so it doesn't know
where you wanted to redirect stdout.

=item No output file after E<gt> or E<gt>E<gt> on command line

(F) An error peculiar to VMS.  Perl handles its own command line redirection,
and found a 'E<gt>' or a 'E<gt>E<gt>' on the command line, but can't find the
name of the file to which to write data destined for stdout.

=item No Perl script found in input

(F) You called C<perl -x>, but no line was found in the file beginning
with #! and containing the word "perl".

=item No setregid available

(F) Configure didn't find anything resembling the setregid() call for
your system.

=item No setreuid available

(F) Configure didn't find anything resembling the setreuid() call for
your system.

=item No space allowed after B<-I>

(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
does not know about the field name.  The field names are looked up in
the %FIELDS hash in the type package at compile time.  The %FIELDS hash
is usually set up with the 'fields' pragma.

=item No such pipe open

(P) An error peculiar to VMS.  The internal routine my_pclose() tried to
close a pipe which hadn't been opened.  This should have been caught earlier as
an attempt to close an unopened filehandle.

=item No such signal: SIG%s

(W) You specified a signal name as a subscript to %SIG that was not recognized.
Say C<kill -l> in your shell to see the valid signal names on your system.

=item Not a CODE reference

(F) Perl was trying to evaluate a reference to a code value (that is, a
subroutine), but found a reference to something else instead.  You can
use the ref() function to find out what kind of ref it really was.
See also L<perlref>.

=item Not a format reference

(F) I'm not sure how you managed to generate a reference to an anonymous
format, but this indicates you did, and that it didn't exist.

=item Not a GLOB reference

(F) Perl was trying to evaluate a reference to a "typeglob" (that is,
a symbol table entry that looks like C<*foo>), but found a reference to
something else instead.  You can use the ref() function to find out
what kind of ref it really was.  See L<perlref>.

=item Not a HASH reference

(F) Perl was trying to evaluate a reference to a hash value, but
found a reference to something else instead.  You can use the ref()
function to find out what kind of ref it really was.  See L<perlref>.

=item Not a perl script

(F) The setuid emulator requires that scripts have a well-formed #! line
even on machines that don't support the #! construct.  The line must
mention perl.

=item Not a SCALAR reference

(F) Perl was trying to evaluate a reference to a scalar value, but
found a reference to something else instead.  You can use the ref()
function to find out what kind of ref it really was.  See L<perlref>.

=item Not a subroutine reference

(F) Perl was trying to evaluate a reference to a code value (that is, a
subroutine), but found a reference to something else instead.  You can
use the ref() function to find out what kind of ref it really was.
See also L<perlref>.

=item Not a subroutine reference in overload table

(F) An attempt was made to specify an entry in an overloading table that
does

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?