*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> perldiag (1)              
Title
Content
Arch
Section
 

PERLDIAG(1)

Contents


NAME    [Toc]    [Back]

       perldiag - various Perl diagnostics

DESCRIPTION    [Toc]    [Back]

       These messages are classified as follows (listed in
       increasing order of desperation):

           (W) A warning (optional).
           (D) A deprecation (optional).
           (S) A severe warning (default).
           (F) A fatal error (trappable).
           (P) An internal error  you  should  never  see  (trappable).
           (X) A very fatal error (nontrappable).
           (A) An alien error message (not generated by Perl).

       The majority of messages from the first three classifications
 above (W, D & S) can be controlled using the "warnings"
 pragma.

       If a message can be controlled by the "warnings" pragma,
       its warning category is included with the classification
       letter in the description below.

       Optional warnings are enabled by using the "warnings"
       pragma or the -w and -W switches. Warnings may be captured
       by setting $SIG{__WARN__} to a reference to a routine that
       will be called on each warning instead of printing it.
       See perlvar.

       Default warnings are always enabled unless they are
       explicitly disabled with the "warnings" pragma or the -X
       switch.

       Trappable errors may be trapped using the eval operator.
       See "eval" in perlfunc.  In almost all cases, warnings may
       be selectively disabled or promoted to fatal errors using
       the "warnings" pragma.  See warnings.

       The messages are in alphabetical order, without regard to
       upper or lower-case.  Some of these messages are  generic.
       Spots that vary are denoted with a %s or other printfstyle
 escape.  These escapes are ignored by the alphabetical
 order, as are all characters other than letters.  To
       look up your message, just ignore anything that is not a
       letter.

       accept() on closed socket %s
           (W closed) You tried to do an accept on a closed
           socket.  Did you forget to check the return value of
           your socket() call?  See "accept" in perlfunc.

       Allocation too large: %lx
           (X) You can't allocate more than 64K on an MS-DOS
           machine.
       '!' allowed only after types %s
           (F) The '!' is allowed in pack() or unpack() only
           after certain types.  See "pack" in perlfunc.

       Ambiguous call resolved as CORE::%s(), qualify as such or
       use &
           (W ambiguous) A subroutine you have declared has the
           same name as a Perl keyword, and you have used the
           name without qualification for calling one or the
           other.  Perl decided to call the builtin because the
           subroutine is not imported.

           To force interpretation as 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 "use subs" pragma).

           To silently interpret it as the Perl operator, use the
           "CORE::" prefix on the operator (e.g. "CORE::log($x)")
           or declare the subroutine to be an object method (see
           "Subroutine Attributes" in perlsub or attributes).

       Ambiguous range in transliteration operator
           (F) You wrote something like "tr/a-z-0//" which
           doesn't mean anything at all.  To include a "-" character
 in a transliteration, put it either first or
           last.  (In the past, "tr/a-z-0//" was synonymous with
           "tr/a-y//", which was probably not what you would have
           expected.)

       Ambiguous use of %s resolved as %s
           (W ambiguous)(S) You said something that may not be
           interpreted the way you thought.  Normally it's pretty
           easy to disambiguate it by supplying a missing quote,
           operator, parenthesis pair or declaration.

       '|' and '<' may not both be specified on command line
           (F) An error peculiar to VMS.  Perl does its own command
 line redirection, and found that STDIN was a
           pipe, and that you also tried to redirect STDIN using
           '<'.  Only one STDIN stream to a customer, please.

       '|' and '>' may not both be specified on command line
           (F) An error peculiar to VMS.  Perl does its own command
 line redirection, and thinks you tried to redirect
 stdout both to a file and into a pipe to another
           command.  You need to choose one or the other, though
           nothing's stopping you from piping into a program or
           Perl script which 'splits' output into two streams,
           such as
               open(OUT,">$ARGV[0]")   or  die  "Can't  write  to
$ARGV[0]: $!";
               while (<STDIN>) {
                   print;
                   print OUT;
               }
               close OUT;

       Applying %s to %s will act on scalar(%s)
           (W misc) The pattern match ("//"), substitution
           ("s///"), and transliteration ("tr///") operators work
           on scalar values.  If you apply one of them to an
           array or a hash, it will convert the array or hash to
           a scalar value -- the length of an array, or the population
 info of a hash -- and then work on that scalar
           value.  This is probably not what you meant to do.
           See "grep" in perlfunc and "map" in perlfunc for
           alternatives.

       Args must match #! line
           (F) The setuid emulator requires that the arguments
           Perl was invoked with match the arguments specified on
           the #! line.  Since some systems impose a one-argument
           limit on the #! line, try combining switches; for
           example, turn "-w -U" into "-wU".

       Arg too short for msgsnd
           (F) msgsnd() requires a string at least as long as
           sizeof(long).

       %s argument is not a HASH or ARRAY element
           (F) The argument to exists() must be a hash or array
           element, such as:

               $foo{$bar}
               $ref->{"susie"}[12]

       %s argument is not a HASH or ARRAY element or slice
           (F) The argument to delete() must be either a hash or
           array element, such as:

               $foo{$bar}
               $ref->{"susie"}[12]

           or a hash or array slice, such as:

               @foo[$bar, $baz, $xyzzy]
               @{$ref->[12]}{"susie", "queue"}

       %s argument is not a subroutine name
           (F) The argument to exists() for "exists &sub" must be
           a subroutine name, and not a subroutine call.  "exists
           &sub()" will generate this error.
       Argument "%s" isn't numeric%s
           (W numeric) The indicated string was fed as an argument
 to an operator that expected a numeric value
           instead.  If you're fortunate the message will identify
 which operator was so unfortunate.

       Argument list not closed for PerlIO layer "%s"
           (W layer) When pushing a layer with arguments onto the
           Perl I/O system you forgot the ) that closes the argument
 list.  (Layers take care of transforming data
           between external and internal representations.)  Perl
           stopped parsing the layer list at this point and did
           not attempt to push this layer.  If your program
           didn't explicitly request the failing operation, it
           may be the result of the value of the environment
           variable PERLIO.

       Array @%s missing the @ in argument %d of %s()
           (D deprecated) Really old Perl let you omit the @ on
           array names in some spots.  This is now heavily deprecated.


       assertion botched: %s
           (P) The malloc package that comes with Perl had an
           internal failure.

       Assertion failed: file "%s"
           (P) A general assertion failed.  The file in question
           must be examined.

       Assignment to both a list and a scalar
           (F) If you assign to a conditional operator, the 2nd
           and 3rd arguments must either both be scalars or both
           be lists.  Otherwise Perl won't know which context to
           supply to the right side.

       A thread exited while %d threads were running
           (W) When using threaded Perl, a thread (not necessarily
 the main thread) exited while there were still
           other threads running.  Usually it's a good idea to
           first collect the return values of the created threads
           by joining them, and only then exit from the main
           thread.  See threads.

       Attempt to access disallowed key '%s' in a restricted hash
           (F) The failing code has attempted to get or set a key
           which is not in the current set of allowed keys of a
           restricted hash.

       Attempt to bless into a reference
           (F) The CLASSNAME argument to the bless() operator is
           expected to be the name of the package to bless the
           resulting object into. You've supplied instead a reference
 to something: perhaps you wrote
               bless $self, $proto;

           when you intended

               bless $self, ref($proto) || $proto;

           If you actually want to bless into the stringified
           version of the reference supplied, you need to
           stringify it yourself, for example by:

               bless $self, "$proto";

       Attempt to delete disallowed key '%s' from a restricted
       hash
           (F) The failing code attempted to delete from a
           restricted hash a key which is not in its key set.

       Attempt to delete readonly key '%s' from a restricted hash
           (F) The failing code attempted to delete a key whose
           value has been declared readonly from a restricted
           hash.

       Attempt to free non-arena SV: 0x%lx
           (P internal) All SV objects are supposed to be allocated
 from arenas that will be garbage collected on
           exit.  An SV was discovered to be outside any of those
           arenas.

       Attempt to free nonexistent shared string
           (P internal) Perl maintains a reference counted internal
 table of strings to optimize the storage and
           access of hash keys and other strings.  This indicates
           someone tried to decrement the reference count of a
           string that can no longer be found in the table.

       Attempt to free temp prematurely
           (W debugging) Mortalized values are supposed to be
           freed by the free_tmps() routine.  This indicates that
           something else is freeing the SV before the
           free_tmps() routine gets a chance, which means that
           the free_tmps() routine will be freeing an unreferenced
 scalar when it does try to free it.

       Attempt to free unreferenced glob pointers
           (P internal) The reference counts got screwed up on
           symbol aliases.

       Attempt to free unreferenced scalar
           (W internal) Perl went to decrement the reference
           count of a scalar to see if it would go to 0, and discovered
 that it had already gone to 0 earlier, and
           should have been freed, and in fact, probably was
           freed.  This could indicate that SvREFCNT_dec() was
           called too many times, or that SvREFCNT_inc() was
           called too few times, or that the SV was mortalized
           when it shouldn't have been, or that memory has been
           corrupted.

       Attempt to join self
           (F) You tried to join a thread from within itself,
           which is an impossible task.  You may be joining the
           wrong thread, or you may need to move the join() to
           some other thread.

       Attempt to pack pointer to temporary value
           (W pack) You tried to pass a temporary value (like the
           result of a function, or a computed expression) to the
           "p" pack() template.  This means the result contains a
           pointer to a location that could become invalid anytime,
 even before the end of the current statement.
           Use literals or global values as arguments to the "p"
           pack() template to avoid this warning.

       Attempt to use reference as lvalue in substr
           (W substr) You supplied a reference as the first argument
 to substr() used as an lvalue, which is pretty
           strange.  Perhaps you forgot to dereference it  first.
           See "substr" in perlfunc.

       Bad arg length for %s, is %d, should be %s
           (F) You passed a buffer of the wrong size to one of
           msgctl(), semctl() or shmctl().  In C parlance, the
           correct sizes are, respectively,
           sizeof(struct msqid_ds *), sizeof(struct semid_ds *),
           and sizeof(struct shmid_ds *).

       Bad evalled substitution pattern
           (F) You've used the "/e" switch to evaluate the
           replacement for a substitution, but perl found a syntax
 error in the code to evaluate, most likely an
           unexpected right brace '}'.

       Bad filehandle: %s
           (F) A symbol was passed to something wanting a filehandle,
 but the symbol has no filehandle associated
           with it.  Perhaps you didn't do an open(), or did it
           in another package.

       Bad free() ignored
           (S malloc) An internal routine called free() on something
 that had never been malloc()ed in the first
           place. Mandatory, but can be disabled by setting environment
 variable "PERL_BADFREE" to 0.

           This message can be seen quite often with DB_File on
           systems with "hard" dynamic linking, like "AIX" and
           "OS/2". It is a bug of "Berkeley DB" which is left
           unnoticed if "DB" uses forgiving system malloc().
       Bad hash
           (P) One of the internal hash routines was passed a
           null HV pointer.

       Bad index while coercing array into hash
           (F) The index looked up in the hash found as the 0'th
           element of a pseudo-hash is not legal.  Index values
           must be at 1 or greater.  See perlref.

       Badly placed ()'s
           (A) You've accidentally run your script through csh
           instead of Perl.  Check the #! line, or manually feed
           your script into Perl yourself.

       Bad name after %s::
           (F) You started to name a symbol by using a package
           prefix, and then didn't finish the symbol.  In particular,
 you can't interpolate outside of quotes, so

               $var = 'myvar';
               $sym = mypack::$var;

           is not the same as

               $var = 'myvar';
               $sym = "mypack::$var";

       Bad realloc() ignored
           (S malloc) An internal routine called realloc() on
           something that had never been malloc()ed in the first
           place. Mandatory, but can be disabled by setting environment
 variable "PERL_BADFREE" to 1.

       Bad symbol for array
           (P) An internal request asked to add an array entry to
           something that wasn't a symbol table entry.

       Bad symbol for filehandle
           (P) An internal request asked to add a filehandle
           entry to something that wasn't a symbol table entry.

       Bad symbol for hash
           (P) An internal request asked to add a hash entry to
           something that wasn't a symbol table entry.

       Bareword found in conditional
           (W bareword) The compiler found a bareword where it
           expected a conditional, which often indicates that an
           || or && was parsed as part of the last argument of
           the previous construct, for example:

               open FOO || die;

           It may also indicate a misspelled constant that has
           been interpreted as a bareword:

               use constant TYPO => 1;
               if (TYOP) { print "foo" }

           The "strict" pragma is useful in avoiding such errors.

       Bareword "%s" not allowed while "strict subs" in use
           (F) With "strict subs" in use, a bareword is only
           allowed as a subroutine identifier, in curly brackets
           or to the left of the "=>" symbol.  Perhaps you need
           to predeclare a subroutine?

       Bareword "%s" refers to nonexistent package
           (W bareword) You used a qualified bareword of the form
           "Foo::", but the compiler saw no other uses of that
           namespace before that point.  Perhaps you need to predeclare
 a package?

       BEGIN failed--compilation aborted
           (F) An untrapped exception was raised while executing
           a BEGIN subroutine.  Compilation stops immediately and
           the interpreter is exited.

       BEGIN not safe after errors--compilation aborted
           (F) Perl found a "BEGIN {}" subroutine (or a "use"
           directive, which implies a "BEGIN {}") after one or
           more compilation errors had already occurred.  Since
           the intended environment for the "BEGIN {}" could not
           be guaranteed (due to the errors), and since subsequent
 code likely depends on its correct operation,
           Perl just gave up.

       1 better written as $1
           (W syntax) Outside of patterns, backreferences live on
           as variables.  The use of backslashes is grandfathered
           on the right-hand side of a substitution, but stylistically
 it's better to use the variable form because
           other Perl programmers will expect it, and it works
           better if there are more than 9 backreferences.

       Binary number > 0b11111111111111111111111111111111 nonportable

           (W portable) The binary number you specified is larger
           than 2**32-1 (4294967295) and therefore non-portable
           between systems.  See perlport for more on portability
           concerns.

       bind() on closed socket %s
           (W  closed) You tried to do a bind on a closed socket.
           Did you forget to check the return value of your
           socket() call?  See "bind" in perlfunc.
       binmode() on closed filehandle %s
           (W unopened) You tried binmode() on a filehandle that
           was never opened.  Check you control flow and number
           of arguments.

       Bit vector size > 32 non-portable
           (W portable) Using bit vector sizes larger than 32 is
           non-portable.

       Bizarre copy of %s in %s
           (P) Perl detected an attempt to copy an internal value
           that is not copyable.

       Buffer overflow in prime_env_iter: %s
           (W internal) A warning peculiar to VMS.  While Perl
           was preparing to iterate over %ENV, it encountered a
           logical name or symbol definition which was too long,
           so it was truncated to the string shown.

       Callback called exit
           (F) A subroutine invoked from an external package via
           call_sv() exited by calling exit.

       %s() called too early to check prototype
           (W prototype) You've called a function that has a prototype
 before the parser saw a definition or declaration
 for it, and Perl could not check that the call
           conforms to the prototype.  You need to either add an
           early prototype declaration for the subroutine in
           question, or move the subroutine definition ahead of
           the call to get proper prototype checking.  Alternatively,
 if you are certain that you're calling the
           function correctly, you may put an ampersand before
           the name to avoid the warning.  See perlsub.

       Cannot compress integer in pack
           (F) An argument to pack("w",...) was too large to compress.
  The BER compressed integer format can only be
           used with positive integers, and you attempted to compress
 Infinity or a very large number (> 1e308).  See
           "pack" in perlfunc.

       Cannot compress negative numbers in pack
           (F) An argument to pack("w",...) was negative.  The
           BER compressed integer format can only be used with
           positive integers.  See "pack" in perlfunc.

       Can only compress unsigned integers in pack
           (F) An argument to pack("w",...) was not an integer.
           The BER compressed integer format can only be used
           with positive integers, and you attempted to compress
           something else.  See "pack" in perlfunc.
       Can't bless non-reference value
           (F) Only hard references may be blessed.  This is how
           Perl "enforces" encapsulation of objects.  See perlobj.


       Can't call method "%s" in empty package "%s"
           (F) You called a method correctly, and it correctly
           indicated a package functioning as a class, but that
           package doesn't have ANYTHING defined in it, let alone
           methods.  See perlobj.

       Can't call method "%s" on an undefined value
           (F) You used the syntax of a method call, but the slot
           filled by the object reference or package name contains
 an undefined value.  Something like this will
           reproduce the error:

               $BADREF = undef;
               process $BADREF 1,2,3;
               $BADREF->process(1,2,3);

       Can't call method "%s" on unblessed reference
           (F) A method call must know in what package it's supposed
 to run.  It ordinarily finds this out from the
           object reference you supply, but you didn't supply an
           object reference in this case.  A reference isn't an
           object reference until it has been blessed.  See perlobj.


       Can't call method "%s" without a package or object reference

           (F) You used the syntax of a method call, but the slot
           filled by the object reference or package name contains
 an expression that returns a defined value which
           is neither an object reference nor a package name.
           Something like this will reproduce the error:

               $BADREF = 42;
               process $BADREF 1,2,3;
               $BADREF->process(1,2,3);

       Can't chdir to %s
           (F) You called "perl -x/foo/bar", but "/foo/bar" is
           not a directory that you can chdir to, possibly
           because it doesn't exist.

       Can't check filesystem of script "%s" for nosuid
           (P) For some reason you can't check the filesystem of
           the script for nosuid.

       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.

       Can't coerce %s to integer in %s
           (F) Certain types of SVs, in particular real symbol
           table entries (typeglobs), can't be forced to stop
           being what they are.  So you can't say things like:

               *foo += 1;

           You CAN say

               $foo = *foo;
               $foo += 1;

           but then $foo no longer contains a glob.

       Can't coerce %s to number in %s
           (F) Certain types of SVs, in particular real symbol
           table entries (typeglobs), can't be forced to stop
           being what they are.

       Can't coerce %s to string in %s
           (F) Certain types of SVs, in particular real symbol
           table entries (typeglobs), can't be forced to stop
           being what they are.

       Can't create pipe mailbox
           (P) An error peculiar to VMS.  The process is suffering
 from exhausted quotas or other plumbing  problems.

       Can't declare class for non-scalar %s in "%s"
           (F) Currently, only scalar variables can be declared
           with a specific class qualifier in a "my" or "our"
           declaration.  The semantics may be extended for other
           types of variables in future.

       Can't declare %s in "%s"
           (F) Only scalar, array, and hash variables may be
           declared as "my" or "our" variables.  They must have
           ordinary identifiers as names.

       Can't do inplace edit: %s is not a regular file
           (S inplace) You tried to use the -i switch on a special
 file, such as a file in /dev, or a FIFO.  The
           file was ignored.

       Can't do inplace edit on %s: %s
           (S inplace) The creation of the new file failed for
           the indicated reason.

       Can't do inplace edit without backup
           (F) You're on a system such as MS-DOS that gets confused
 if you try reading from a deleted (but still
           opened) file.  You have to say "-i.bak", or some such.
       Can't do inplace edit: %s would not be unique
           (S inplace) Your filesystem does not support filenames
           longer than 14 characters and Perl was unable to create
 a unique filename during inplace editing with the
           -i switch.  The file was ignored.

       Can't do {n,m} with n > m in regex; marked by <-- HERE in
       m/%s/
           (F) Minima must be less than or equal to maxima. If
           you really want your regexp to match something 0
           times, just put {0}. The <-- HERE shows in the regular
           expression about where the problem was discovered. See
           perlre.

       Can't do setegid!
           (P) The setegid() call failed for some reason in the
           setuid emulator of suidperl.

       Can't do seteuid!
           (P) The setuid emulator of suidperl failed for some
           reason.

       Can't do setuid
           (F) This typically means that ordinary perl tried to
           exec suidperl to do setuid emulation, but couldn't
           exec it.  It looks for a name of the form sperl5.000
           in the same directory that the perl executable resides
           under the name perl5.000, typically /usr/local/bin on
           Unix machines.  If the file is there, check the execute
 permissions.  If it isn't, ask your sysadmin why
           he and/or she removed it.

       Can't do waitpid with flags
           (F) This machine doesn't have either waitpid() or
           wait4(), so only waitpid() without flags is  emulated.

       Can't emulate -%s on #! line
           (F) The #! line specifies a switch that doesn't make
           sense at this point.  For example, it'd be kind of
           silly to put a -x on the #!  line.

       Can't exec "%s": %s
           (W exec) A system(), exec(), or piped open call could
           not execute the named program for the indicated reason.
  Typical reasons include: the permissions were
           wrong on the file, the file wasn't found in
           $ENV{PATH}, the executable in question was compiled
           for another architecture, or the #! line in a script
           points to an interpreter that can't be run for similar
           reasons.  (Or maybe your system doesn't support #! at
           all.)

       Can't exec %s
           (F) Perl was trying to execute the indicated program
           for you because that's what the #! line said.  If
           that's not what you wanted, you may need to mention
           "perl" on the #! line somewhere.

       Can't execute %s
           (F) You used the -S switch, but the copies of the
           script to execute found in the PATH did not have correct
 permissions.

       Can't find an opnumber for "%s"
           (F) A string of a form "CORE::word" was given to pro-
           totype(), but there is no builtin with the name
           "word".

       Can't find %s character property "%s"
           (F)             You             used              "{}"
or "P{}" but the character property
 by that name could not be found. Maybe you misspelled
 the name of the property (remember that the
           names of character properties consist only of alphanumeric
 characters), or maybe you forgot the "Is" or
           "In" prefix?

       Can't find label %s
           (F) You said to goto a label that isn't mentioned anywhere
 that it's possible for us to go to.  See "goto"
           in perlfunc.

       Can't find %s on PATH
           (F) You used the -S switch, but the script to execute
           could not be found in the PATH.

       Can't find %s on PATH, '.' not in PATH
           (F) You used the -S switch, but the script to execute
           could not be found in the PATH, or at least not with
           the correct permissions.  The script exists in the
           current directory, but PATH prohibits running it.

       Can't find %s property definition %s
           (F)     You    may    have    tried    to    use    ""
which means a Unicode
      property      (for      example       "{Lu}"
is all uppercase
           letters).  If you did mean to use a Unicode property,
           see perlunicode for the list of known properties.  If
           you didn't mean to use a Unicode property, escape the
           "",
either        by        "\p"        (just         the         "")
or                             by                             "Q"
           (the rest of the string, until possible "

       Can't find string terminator %s anywhere before EOF
           (F) Perl strings can stretch over multiple lines.
           This message means that the closing delimiter was
           omitted.  Because bracketed quotes count nesting levels,
 the following is missing its final parenthesis:

               print q(The character '(' starts a side comment.);
           If you're getting this error from a here-document, you
           may have included unseen whitespace before or after
           your closing tag. A good programmer's editor will have
           a way to help you find these characters.

       Can't fork
           (F) A fatal error occurred while trying to fork while
           opening a pipeline.

       Can't get filespec - stale stat buffer?
           (S) A warning peculiar to VMS.  This arises because of
           the difference between access checks under VMS and
           under the Unix model Perl assumes.  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 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 routine knows about the Perl "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.)

       Can't get pipe mailbox device name
           (P) An error peculiar to VMS.  After creating a mailbox
 to act as a pipe, Perl can't retrieve its name for
           later use.

       Can't get SYSGEN parameter value for MAXBUF
           (P) An error peculiar to VMS.  Perl asked $GETSYI how
           big you want your mailbox buffers to be, and didn't
           get an answer.

       Can't "goto" into the middle of a foreach loop
           (F) A "goto" statement was executed to jump into the
           middle of a foreach loop.  You can't get there from
           here.  See "goto" in perlfunc.

       Can't "goto" out of a pseudo block
           (F) A "goto" statement was executed to jump out of
           what might look like a block, except that it isn't a
           proper block.  This usually occurs if you tried to
           jump out of a sort() block or subroutine, which is a
           no-no.  See "goto" in perlfunc.
       Can't goto subroutine from an eval-string
           (F) The "goto subroutine" call can't be used to jump
           out of an eval "string".  (You can use it to jump out
           of an eval {BLOCK}, but you probably don't want to.)

       Can't goto subroutine outside a subroutine
           (F) The deeply magical "goto subroutine" call can only
           replace one subroutine call for another.  It can't
           manufacture one out of whole cloth.  In general you
           should be calling it out of only an AUTOLOAD routine
           anyway.  See "goto" in perlfunc.

       Can't ignore signal CHLD, forcing to default
           (W signal) Perl has detected that it is being run with
           the SIGCHLD signal (sometimes known as SIGCLD) disabled.
  Since disabling this signal will interfere
           with proper determination of exit status of child processes,
 Perl has reset the signal to its default
           value.  This situation typically indicates that the
           parent program under which Perl may be running (e.g.
           cron) is being very careless.

       Can't "last" outside a loop block
           (F) A "last" statement was executed to break out of
           the current block, except that there's this itty bitty
           problem called there isn't a current block.  Note that
           an "if" or "else" block doesn't count as a "loopish"
           block, as doesn't a block given to sort(), map() or
           grep().  You can usually double the curlies to get the
           same effect though, because the inner curlies will be
           considered a block that loops once.  See "last" in
           perlfunc.

       Can't localize lexical variable %s
           (F) You used local on a variable name that was previously
 declared as a lexical variable using "my".  This
           is not allowed.  If you want to localize a package
           variable of the same name, qualify it with the package
           name.

       Can't localize pseudo-hash element
           (F) You said something like "local $ar->{'key'}",
           where $ar is a reference to a pseudo-hash.  That
           hasn't been implemented yet, but you can get a similar
           effect by localizing the corresponding array element
           directly -- "local $ar->[$ar->[0]{'key'}]".

       Can't localize through a reference
           (F) You said something like "local $$ref", which Perl
           can't currently handle, because when it goes to
           restore the old value of whatever $ref pointed to
           after the scope of the local() is finished, it can't
           be sure that $ref will still be a reference.
       Can't locate %s
           (F) You said to "do" (or "require", or "use") a file
           that couldn't be found. Perl looks for the file in all
           the locations mentioned in @INC, unless the file name
           included the full path to the file.  Perhaps you need
           to set the PERL5LIB or PERL5OPT environment variable
           to say where the extra library is, or maybe the script
           needs to add the library name to @INC.  Or maybe you
           just misspelled the name of the file.  See "require"
           in perlfunc and lib.

       Can't locate auto/%s.al in @INC
           (F) A function (or method) was called in a package
           which allows autoload, but there is no function to
           autoload.  Most probable causes are a misprint in a
           function/method name or a failure to "AutoSplit" the
           file, say, by doing "make install".

       Can't locate object method "%s" via package "%s"
           (F) You called a method correctly, and it correctly
           indicated a package functioning as a class, but that
           package doesn't define that particular method, nor
           does any of its base classes.  See perlobj.

       Can't locate package %s for @%s::ISA
           (W syntax) The @ISA array contained the name of
           another package that doesn't seem to exist.

       Can't locate PerlIO%s
           (F) You tried to use in open() a PerlIO layer that
           does not exist, e.g. open(FH, ">:nosuchlayer", "somefile").


       Can't make list assignment to ENV on this system
           (F) List assignment to %ENV is not supported on some
           systems, notably VMS.

       Can't modify %s in %s
           (F) You aren't allowed to assign to the item indicated,
 or otherwise try to change it, such as with an
           auto-increment.

       Can't modify nonexistent substring
           (P) The internal routine that does assignment to a
           substr() was handed a NULL.

       Can't modify non-lvalue subroutine call
           (F) Subroutines meant to be used in lvalue context
           should be declared as such, see "Lvalue subroutines"
           in perlsub.

       Can't msgrcv to read-only var
           (F) The target of a msgrcv must be modifiable to be
           used as a receive buffer.
       Can't "next" outside a loop block
           (F) A "next" statement was executed to reiterate the
           current block, but there isn't a current block.  Note
           that an "if" or "else" block doesn't count as a "loopish"
 block, as doesn't a block given to sort(), map()
           or grep().  You can usually double the curlies to get
           the same effect though, because the inner curlies will
           be considered a block that loops once.  See "next" in
           perlfunc.

       Can't open %s: %s
           (S inplace) The implicit opening of a file through use
           of the "<>" filehandle, either implicitly under the
           "-n" or "-p" command-line switches, or explicitly,
           failed for the indicated reason.  Usually this is
           because you don't have read permission for a file
           which you named on the command line.

       Can't open a reference
           (W io) You tried to open a scalar reference for reading
 or writing, using the 3-arg open() syntax :

               open FH, '>', $ref;

           but your version of perl is compiled without perlio,
           and this form of open is not supported.

       Can't open bidirectional pipe
           (W pipe) You tried to say "open(CMD, "|cmd|")", which
           is not supported.  You can try any of several modules
           in the Perl library to do this, such as IPC::Open2.
           Alternately, direct the pipe's output to a file using
           ">", and then read it in under a different file handle.


       Can't open error file %s as stderr
           (F) An error peculiar to VMS.  Perl does its own command
 line redirection, and couldn't open the file
           specified after '2>' or '2>>' on the command line for
           writing.

       Can't open input file %s as stdin
           (F) An error peculiar to VMS.  Perl does its own command
 line redirection, and couldn't open the file
           specified after '<' on the command line for reading.

       Can't open output file %s as stdout
           (F) An error peculiar to VMS.  Perl does its own command
 line redirection, and couldn't open the file
           specified after '>' or '>>' on the command line for
           writing.

       Can't open output pipe (name: %s)
           (P) An error peculiar to VMS.  Perl does its own
           command line redirection, and couldn't open the pipe
           into which to send data destined for stdout.

       Can't open perl script%s
           (F) The script you specified can't be opened for the
           indicated reason.

       Can't read CRTL environ
           (S) A warning peculiar to VMS.  Perl tried to read an
           element of %ENV from the CRTL's internal environment
           array and discovered the array was missing.  You need
           to figure out where your CRTL misplaced its environ or
           define PERL_ENV_TABLES (see perlvms) so that environ
           is not searched.

       Can't redefine active sort subroutine %s
           (F) Perl optimizes the internal handling of sort subroutines
 and keeps pointers into them.  You tried to
           redefine one such sort subroutine when it was currently
 active, which is not allowed.  If you really
           want to do this, you should write "sort { &func } @x"
           instead of "sort func @x".

       Can't "redo" outside a loop block
           (F) A "redo" statement was executed to restart the
           current block, but there isn't a current block.  Note
           that an "if" or "else" block doesn't count as a "loopish"
 block, as doesn't a block given to sort(), map()
           or grep().  You can usually double the curlies to get
           the same effect though, because the inner curlies will
           be considered a block that loops once.  See "redo" in
           perlfunc.

       Can't remove %s: %s, skipping file
           (S inplace) You requested an inplace edit without creating
 a backup file.  Perl was unable to remove the
           original file to replace it with the modified file.
           The file was left unmodified.

       Can't rename %s to %s: %s, skipping file
           (S inplace) The rename done by the -i switch failed
           for some reason, probably because you don't have write
           permission to the directory.

       Can't reopen input pipe (name: %s) in binary mode
           (P) An error peculiar to VMS.  Perl thought stdin was
           a  pipe, and tried to reopen it to accept binary data.
           Alas, it failed.

       Can't resolve method `%s' overloading `%s' in package `%s'
           (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 "???", this is an internal error.
       Can't reswap uid and euid
           (P) The setreuid() call failed for some reason in the
           setuid emulator of suidperl.

       Can't return %s from lvalue subroutine
           (F) Perl detected an attempt to return illegal lvalues
           (such as temporary or readonly values) from a subroutine
 used as an lvalue.  This is not allowed.

       Can't return outside a subroutine
           (F) The return statement was executed in mainline
           code, that is, where there was no subroutine call to
           return out of.  See perlsub.

       Can't return %s to lvalue scalar context
           (F) You tried to return a complete array or hash from
           an lvalue subroutine, but you called the subroutine in
           a way that made Perl think you meant to return only
           one value. You probably meant to write parentheses
           around the call to the subroutine, which tell Perl
           that the call should be in list context.

       Can't stat script "%s"
           (P) For some reason you can't fstat() the script even
           though you have it open already.  Bizarre.

       Can't swap uid and euid
           (P) The setreuid() call failed for some reason in the
           setuid emulator of suidperl.

       Can't take log of %g
           (F) For ordinary real numbers, you can't take the logarithm
 of a negative number or zero. There's a
           Math::Complex package that comes standard with Perl,
           though, if you really want to do that for the negative
           numbers.

       Can't take sqrt of %g
           (F) For ordinary real numbers, you can't take the
           square root of a negative number.  There's a
           Math::Complex package that comes standard with Perl,
           though, if you really want to do that.

       Can't undef active subroutine
           (F) You can't undefine a routine that's currently running.
  You can, however, redefine it while it's running,
 and you can even undef the redefined subroutine
           while the old routine is running.  Go figure.

       Can't unshift
           (F) You tried to unshift an "unreal" array that can't
           be unshifted, such as the main Perl stack.
       Can't upgrade that kind of scalar
           (P) The internal sv_upgrade routine adds "members" to
           an SV, making it into a more specialized kind of SV.
           The top several SV types are so specialized, however,
           that they cannot be interconverted.  This message
           indicates that such a conversion was attempted.

       Can't upgrade to undef
           (P) The undefined SV is the bottom of the totem pole,
           in the scheme of upgradability.  Upgrading to undef
           indicates an error in the code calling sv_upgrade.

       Can't use anonymous symbol table for method lookup
           (P) The internal routine that does method lookup was
           handed a symbol table that doesn't have a name.  Symbol
 tables can become anonymous for example by
           undefining stashes: "undef %Some::Package::".

       Can't use an undefined value as %s reference
           (F) A value used as either a hard reference or a symbolic
 reference must be a defined value.  This helps
           to delurk some insidious errors.

       Can't use bareword ("%s") as %s ref while "strict refs" in
       use
           (F) Only hard references are allowed by "strict refs".
           Symbolic references are disallowed.  See perlref.

       Can't use %! because Errno.pm is not available
           (F) The first time the %! hash is used, perl automatically
 loads the Errno.pm module. The Errno module is
           expected to tie the %! hash to provide symbolic names
           for $! errno values.

       Can't use %s for loop variable
           (F) Only a simple scalar variable may be used as a
           loop variable on a foreach.

       Can't use global %s in "my"
           (F) You tried to declare a magical variable as a lexical
 variable.  This is not allowed, because the magic
           can be tied to only one location (namely the global
           variable) and it would be incredibly confusing to have
           variables in your program that looked like magical
           variables but weren't.

       Can't use "my %s" in sort comparison
           (F) The global variables $a and $b are reserved for
           sort comparisons.  You mentioned $a or $b in the same
           line as the <=> or cmp operator, 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.
       Can't use %s ref as %s ref
           (F) You've mixed up your reference types.  You have to
           dereference a reference of the type needed.  You can
           use the ref() function to test the type of the reference,
 if need be.

       Can't use string ("%s") as %s ref while "strict refs" in
       use
           (F) Only hard references are allowed by "strict refs".
           Symbolic references are disallowed.  See perlref.

       Can't use subscript on %s
           (F) The compiler tried to interpret a bracketed
           expression as a subscript.  But to the left of the
           brackets was an expression that didn't look like an
           array reference, or anything else subscriptable.

       Can't use c to mean $%c in expression
           (W syntax) In an ordinary expression, backslash is a
           unary operator that creates a reference to its argument.
  The use of backslash to indicate a backreference
 to a matched substring is valid only as part of a
           regular expression pattern.  Trying to do this in
           ordinary Perl code produces a value that prints out
           looking like SCALAR(0xdecaf).  Use the $1 form
           instead.

       Can't weaken a nonreference
           (F) You attempted to weaken something that was not a
           reference.  Only references can be weakened.

       Can't x= to read-only value
           (F) You tried to repeat a constant value (often the
           undefined value) with an assignment operator, which
           implies modifying the value itself.  Perhaps you need
           to copy the value to a temporary, and repeat that.

       Character in "C" format wrapped in pack
           (W pack) You said

               pack("C", $x)

           where $x is either less than 0 or more than 255; the
           "C" format is only for encoding native operating system
 characters (ASCII, EBCDIC, and so on) and not for
           Unicode characters, so Perl behaved as if you meant

               pack("C", $x & 255)

           If you actually want to pack Unicode codepoints, use
           the "U" format instead.

       Character in "c" format wrapped in pack
           (W pack) You said
               pack("c", $x)

           where $x is either less than -128 or more than 127;
           the "c" format is only for encoding native operating
           system characters (ASCII, EBCDIC, and so on) and not
           for Unicode characters, so Perl behaved as if you
           meant

               pack("c", $x & 255);

           If you actually want to pack Unicode codepoints, use
           the "U" format instead.

       close() on unopened filehandle %s
           (W unopened) You tried to close a filehandle that was
           never opened.

       Code missing after '/'
           (F) You had a (sub-)template that ends with a '/'.
           There must be another template code following the
           slash. See "pack" in perlfunc.

       %s: Command not found
           (A) You've accidentally run your script through csh
           instead of Perl.  Check the #! line, or manually feed
           your script into Perl yourself.

       Compilation failed in require
           (F) Perl could not compile a file specified in a
           "require" statement.  Perl uses this generic message
           when none of the errors that it encountered were
           severe enough to halt compilation immediately.

       Complex regular subexpression recursion limit (%d)
       exceeded
           (W regexp) The regular expression engine uses recursion
 in complex situations where back-tracking is
           required.  Recursion depth is limited to 32766, or
           perhaps less in architectures where the stack cannot
           grow arbitrarily.  ("Simple" and "medium" situations
           are handled without recursion and are not subject to a
           limit.)  Try shortening the string under examination;
           looping in Perl code (e.g. with "while") rather than
           in the regular expression engine; or rewriting the
           regular expression so that it is simpler or backtracks
           less.  (See perlfaq2 for information on Mastering Reg-
           ular Expressions.)

       cond_broadcast() called on unlocked variable
           (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 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 after the
           other thread has entered cond_wait() and thus relinquished
 the lock.

       cond_signal() called on unlocked variable
           (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 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 after the
           other thread has entered cond_wait() and thus relinquished
 the lock.

       connect() on closed socket %s
           (W closed) You tried to do a connect on a closed
           socket.  Did you forget to check the return value of
           your socket() call?  See "connect" in perlfunc.

       Constant(%s)%s: %s
           (F) The parser found inconsistencies either while
           attempting to define an overloaded constant, or when
           trying to find the character name specified in the
           ".}" escape.  Perhaps you forgot to load the corresponding
 "overload" or "charnames" pragma?  See
           charnames and overload.

       Constant is not %s reference
           (F) A constant value (perhaps declared using the "use
           constant" pragma) is being dereferenced, but it
           amounts to the wrong type of reference.  The message
           indicates the type of reference that was expected.
           This usually indicates a syntax error in dereferencing
           the constant value.  See "Constant Functions" in perlsub
 and constant.

       Constant subroutine %s redefined
           (S) You redefined a subroutine which had previously
           been eligible for inlining.  See "Constant Functions"
           in perlsub for commentary and workarounds.

       Constant subroutine %s undefined
           (W misc) You undefined a subroutine which had previously
 been eligible for inlining.  See "Constant Functions"
 in perlsub for commentary and workarounds.

       Copy method did not return a reference
           (F) The method which overloads "=" is buggy. See "Copy
           Constructor" in overload.
       CORE::%s is not a keyword
           (F) The CORE:: namespace is reserved for Perl keywords.


       corrupted regexp pointers
           (P) The regular expression engine got confused by what
           the regular expression compiler gave it.

       corrupted regexp program
           (P) The regular expression engine got passed a regexp
           program without a valid magic number.

       Corrupt malloc ptr 0x%lx at 0x%lx
           (P) The malloc package that comes with Perl had an
           internal failure.

       Count after length/code in unpack
           (F) You had an unpack template indicating a countedlength
 string, but you have also specified an explicit
           size for the string.  See "pack" in perlfunc.

       Deep recursion on subroutine "%s"
           (W recursion) This subroutine has called itself
           (directly or indirectly) 100 times more than it has
           returned.  This probably indicates an infinite recursion,
 unless you're writing strange benchmark programs,
 in which case it indicates something else.

       defined(@array) is deprecated
           (D deprecated) defined() is not usually useful on
           arrays because it checks for an undefined scalar
           value.  If you want to see if the array is empty, just
           use "if (@array) { # not empty }" for example.

       defined(%hash) is deprecated
           (D deprecated) defined() is not usually useful on
           hashes because it checks for an undefined scalar
           value.  If you want to see if the hash is empty, just
           use "if (%hash) { # not empty }" for example.

       %s defines neither package nor VERSION--version check
       failed
           (F) You said something like "use Module 42" but in the
           Module file there are neither package declarations nor
           a $VERSION.

       Delimiter for here document is too long
           (F) In a here document construct like "<<FOO", the
           label "FOO" is too long for Perl to handle.  You have
           to be seriously twisted to write code that triggers
           this error.

       DESTROY created new reference to dead object '%s'
           (F) A DESTROY() method created a new reference to the
           object which is just being DESTROYed. Perl is confused,
 and prefers to abort rather than to create a
           dangling reference.

       Did not produce a valid header
           See Server error.

       %s did not return a true value
           (F) A required (or used) file must return a true value
           to indicate that it compiled correctly and ran its
           initialization code correctly.  It's traditional to
           end such a file with a "1;", though any true value
           would do.  See "require" in perlfunc.

       (Did you mean &%s instead?)
           (W) You probably referred to an imported subroutine
           &FOO as $FOO or some such.

       (Did you mean "local" instead of "our"?)
           (W misc) Remember that "our" does not localize the
           declared global variable.  You have declared it again
           in the same lexical scope, which seems superfluous.

       (Did you mean $ or @ instead of %?)
           (W) You probably said %hash{$key} when you meant
           $hash{$key} or @hash{@keys}.  On the other hand, maybe
           you just meant %hash and got carried away.

       Died
           (F) You passed die() an empty string (the equivalent
           of "die """) or you called it with no args and both $@
           and $_ were empty.

       Document contains no data
           See Server error.

       %s does not define %s::VERSION--version check failed
           (F) You said something like "use Module 42" but the
           Module did not define a "$VERSION."

       '/' does not take a repeat count
           (F) You cannot put a repeat count of any kind right
           after the '/' code.  See "pack" in perlfunc.

       Don't know how to handle magic of type '%s'
           (P) The internal handling of magical variables has
           been cursed.

       do_study: out of memory
           (P) This should have been caught by safemalloc()
           instead.

       (Do you need to predeclare %s?)
           (S syntax) This is an educated guess made in
           conjunction with the message "%s found where operator
           expected".  It often means a subroutine or module name
           is being referenced that hasn't been declared yet.
           This may be because of ordering problems in your file,
           or because of a missing "sub", "package", "require",
           or "use" statement.  If you're referencing something
           that isn't defined yet, you don't actually have to
           define the subroutine or package before the current
           location.  You can use an empty "sub foo;" or "package
           FOO;" to enter a "forward" declaration.

       dump() better written as CORE::dump()
           (W misc) You used the obsolescent "dump()" built-in
           function, without fully qualifying it as
           "CORE::dump()".  Maybe it's a typo.  See "dump" in
           perlfunc.

       Duplicate free() ignored
           (S malloc) An internal routine called free() on something
 that had already been freed.

       elseif should be elsif
           (S syntax) There is no keyword "elseif" in Perl
           because Larry thinks it's ugly. Your code will be
           interpreted as an attempt to call a method named
           "elseif" for the class returned by the following
           block.  This is unlikely to be what you want.

       Empty %s
           (F)                                                 ""
and "P" are used to introduce a named Unicode
 property, as described in perlunicode and perlre.
           You                      used                       ""
or "P" in a regular expression without
           specifying the property name.

       entering effective %s failed
           (F) While under the "use filetest" pragma, switching
           the real and effective uids or gids failed.

       Error converting file specification %s
           (F) An error peculiar to VMS.  Because Perl may have
           to deal with file specifications in either VMS or Unix
           syntax, it converts them to a single form when it must
           operate on them directly.  Either you've passed an
           invalid file specification to Perl, or you've found a
           case the conversion routines don't handle.  Drat.

       %s: Eval-group in insecure regular expression
           (F) Perl detected tainted data when trying to compile
           a regular expression that contains the "(?{ ... })"
           zero-width assertion, which is unsafe.  See "(?{ code
           })" in perlre, and perlsec.

       %s: Eval-group not allowed at run time
           (F) Perl tried to compile a regular expression
           containing the "(?{ ... })" 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
           "(?{ code })" in perlre.

       %s: Eval-group not allowed, use re 'eval'
           (F) A regular expression contained the "(?{ ... })"
           zero-width assertion, but that construct is only
         

 Similar pages
Name OS Title
diagnostics IRIX Perl compiler pragma to force verbose warning diagnostics splain - standalone program to do the same thing
perljp OpenBSD AEuEU,i Perl Y~YxYE `A^a`I`A Perl xIAx3|xOxex|x3x1/2! Perl 5.8.0 xexeicUni- _ codeYuYYi1/4YEx~AcEyxE...
autoconf OpenBSD diagnostics from the autoconfiguration code
autoconf OpenBSD diagnostics from the autoconfiguration code
autoconf OpenBSD diagnostics from the autoconfiguration code
autoconf OpenBSD diagnostics from the autoconfiguration code
autoconf OpenBSD diagnostics from the autoconfiguration code
autoconf OpenBSD diagnostics from the autoconfiguration code
autoconf OpenBSD diagnostics from the autoconfiguration code
assert Tru64 Inserts program diagnostics
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service