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

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

Contents


PERLDIAG(1)							   PERLDIAG(1)


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 (mandatory).
	 (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).

     Optional warnings are enabled by using the	-w switch.  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 the	perlvar
     manpage.  Trappable errors	may be trapped using the eval operator.	 See
     the eval entry in the perlfunc manpage.

     Some of these messages are	generic.  Spots	that vary are denoted with a
     %s, just as in a printf format.  Note that	some messages start with a %s!
     The symbols "%(-?@	sort before the	letters, while [ and \ sort after.

     "my" variable %s can't be in a package
	 (F) Lexically scoped variables	aren't in a package, so	it doesn't
	 make sense to try to declare one with a package qualifier on the
	 front.	 Use local() if	you want to localize a package variable.

     "my" variable %s masks earlier declaration	in same	scope
	 (W) A lexical variable	has been redeclared in the same	scope,
	 effectively eliminating all access to the previous instance.  This is
	 almost	always a typographical error.  Note that the earlier variable
	 will still exist until	the end	of the scope or	until all closure
	 referents to it are destroyed.

     "no" not allowed in expression
	 (F) The "no" keyword is recognized and	executed at compile time, and
	 returns no useful value.  See the perlmod manpage.

     "use" not allowed in expression
	 (F) The "use" keyword is recognized and executed at compile time, and
	 returns no useful value.  See the perlmod manpage.

     % may only	be used	in unpack
	 (F) You can't pack a string by	supplying a checksum, because the
	 checksumming process loses information, and you can't go the other
	 way.  See the unpack entry in the perlfunc manpage.






									Page 1






PERLDIAG(1)							   PERLDIAG(1)



     %s	(...) interpreted as function
	 (W) You've run	afoul of the rule that says that any list operator
	 followed by parentheses turns into a function,	with all the list
	 operators arguments found inside the parentheses.  See	the section on
	 Terms and List	Operators (Leftward) in	the perlop manpage.

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

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


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

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

	 or a hash slice, such as

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


     %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 the require entry	in the perlfunc	manpage.

     %s	found where operator expected
	 (S) The Perl lexer knows whether to expect a term or an operator.  If
	 it sees what it knows to be a term when it was	expecting to see an
	 operator, it gives you	this warning.  Usually it indicates that an
	 operator or delimiter was omitted, such as a semicolon.

     %s	had compilation	errors
	 (F) The final summary message when a perl -c fails.

     %s	has too	many errors
	 (F) The parser	has given up trying to parse the program after 10
	 errors.  Further error	messages would likely be uninformative.

     %s	matches	null string many times
	 (W) The pattern you've	specified would	be an infinite loop if the
	 regular expression engine didn't specifically check for that.	See
	 the perlre manpage.

     %s	never introduced
	 (S) The symbol	in question was	declared but somehow went out of scope
	 before	it could possibly have been used.



									Page 2






PERLDIAG(1)							   PERLDIAG(1)



     %s	syntax OK
	 (F) The final summary message when a perl -c succeeds.

     %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.

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

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

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

     (Missing semicolon	on previous line?)
	 (S) This is an	educated guess made in conjunction with	the message
	 "%s found where operator expected".  Don't automatically put a
	 semicolon on the previous line	just because you saw this message.

     -P	not allowed for	setuid/setgid script
	 (F) The script	would have to be opened	by the C preprocessor by name,
	 which provides	a race condition that breaks security.

     -T	and -B not implemented on filehandles
	 (F) Perl can't	peek at	the stdio buffer of filehandles	when it
	 doesn't know about your kind of stdio.	 You'll	have to	use a filename
	 instead.

     -p	destination: %s
	 (F) An	error occurred during the implicit output invoked by the -p
	 command-line switch.  (This output goes to STDOUT unless you've
	 redirected it with select().)

     500 Server	error
	 See Server error.

     ?+* follows nothing in regexp
	 (F) You started a regular expression with a quantifier.  Backslash it
	 if you	meant it literally.   See the perlre manpage.

     @ outside of string
	 (F) You had a pack template that specified an absolute	position
	 outside the string being unpacked.  See the pack entry	in the
	 perlfunc manpage.





									Page 3






PERLDIAG(1)							   PERLDIAG(1)



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

     Allocation	too large: %lx
	 (X) You can't allocate	more than 64K on an MS-DOS machine.

     Allocation	too large
	 (F) You can't allocate	more than 2^31+"small amount" bytes.

     Applying %s to %s will act	on scalar(%s)
	 (W) The pattern match (//), substitution (s///), and translation
	 (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 the grep entry in the perlfunc manpage and the map
	 entry in the perlfunc manpage for alternatives.

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

     Ambiguous use of %s resolved as %s
	 (W)(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.

     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.

     Argument "%s" isn't numeric%s
	 (W) 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.

     Array @%s missing the @ in	argument %d of %s()
	 (D) 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.






									Page 4






PERLDIAG(1)							   PERLDIAG(1)



     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.

     Attempt to	free non-arena SV: 0x%lx
	 (P) 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) 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) 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) The reference counts got screwed up on symbol aliases.

     Attempt to	free unreferenced scalar
	 (W) 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	pack pointer to	temporary value
	 (W) 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) 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 the	substr entry in	the perlfunc manpage.

     Bad arg length for	%s, is %d, should be %d
	 (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 *),



									Page 5






PERLDIAG(1)							   PERLDIAG(1)



	 and sizeof(struct shmid_ds *).

     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) 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 1.

	 This message can be quite often seen 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 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 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.

     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.

     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 braces	or to the left of the "=>"



									Page 6






PERLDIAG(1)							   PERLDIAG(1)



	 symbol.  Perhaps you need to predeclare a subroutine?

     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.

     bind() on closed fd
	 (W) You tried to do a bind on a closed	socket.	 Did you forget	to
	 check the return value	of your	socket() call?	See the	bind entry in
	 the perlfunc manpage.

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

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

     Can't "goto" outside a 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	the goto entry in the perlfunc manpage.

     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 the	goto entry in
	 the perlfunc manpage.

     Can't "last" outside a 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().	 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	the
	 last entry in the perlfunc manpage.

     Can't "next" outside a 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().  You can usually double the curlies to	get the	same effect



									Page 7






PERLDIAG(1)							   PERLDIAG(1)



	 though, because the inner curlies will	be considered a	block that
	 loops once.  See the next entry in the	perlfunc manpage.

     Can't "redo" outside a 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().  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 the redo entry in the	perlfunc manpage.

     Can't bless non-reference value
	 (F) Only hard references may be blessed.  This	is how Perl "enforces"
	 encapsulation of objects.  See	the perlobj manpage.

     Can't break at that line
	 (S) A warning intended	to only	be printed while running within	the
	 debugger, indicating the line number specified	wasn't the location of
	 a statement that could	be stopped at.

     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 the perlobj manpage.

     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 the perlobj
	 manpage.

     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
	 neither an object reference nor a package name.  (Perhaps it's	null?)
	 Something like	this will reproduce the	error:

	     $BADREF = undef;
	     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 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:




									Page 8






PERLDIAG(1)							   PERLDIAG(1)



	     *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 %s in my
	 (F) Only scalar, array, and hash variables may	be declared as lexical
	 variables.  They must have ordinary identifiers as names.

     Can't do inplace edit on %s: %s
	 (S) 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 > 14 characters
	 (S) There isn't enough	room in	the filename to	make a backup name for
	 the file.

     Can't do inplace edit: %s is not a	regular	file
	 (S) 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 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



									Page 9






PERLDIAG(1)							   PERLDIAG(1)



	 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 do {n,m} with n > m
	 (F) Minima must be less than or equal to maxima.  If you really want
	 your regexp to	match something	0 times, just put {0}.	See the	perlre
	 manpage.

     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
	 (W) An	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	%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 on PATH
	 (F) You used the -S switch, but the script to execute could not be
	 found in the PATH.

     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	the goto entry in the perlfunc
	 manpage.





								       Page 10






PERLDIAG(1)							   PERLDIAG(1)



     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	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 the goto entry in	the perlfunc manpage.

     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



								       Page 11






PERLDIAG(1)							   PERLDIAG(1)



	 be sure that $ref will	still be a reference.

     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 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 %s in	@INC
	 (F) You said to do (or	require, or use) a file	that couldn't be found
	 in any	of the libraries mentioned in @INC.  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	the
	 require entry in the perlfunc manpage.

     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 the perlobj
	 manpage.

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

     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 mktemp()
	 (F) The mktemp() routine failed for some reason while trying to
	 process a -e switch.  Maybe your /tmp partition is full, or
	 clobbered.

     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 msgrcv to read-only var
	 (F) The target	of a msgrcv must be modifiable to be used as a receive
	 buffer.



								       Page 12






PERLDIAG(1)							   PERLDIAG(1)



     Can't open	%s: %s
	 (S) 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	bidirectional pipe
	 (W) 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 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 rename %s to	%s: %s,	skipping file
	 (S) 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.




								       Page 13






PERLDIAG(1)							   PERLDIAG(1)



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

     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 the perlsub
	 manpage.

     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 "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.



								       Page 14






PERLDIAG(1)							   PERLDIAG(1)



	 Either	qualify	the sort variable with the package name, or rename the
	 lexical variable.

     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 %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 \1 to mean $1 in	expression
	 (W) 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 use bareword	'%s' as	%s ref while \
	 (F) Only hard references are allowed by "strict refs".	 Symbolic
	 references are	disallowed.  See the perlref manpage.

     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 the perlref manpage.

     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 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 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 write to temp file for -e: %s
	 (F) The write routine failed for some reason while trying to process
	 a -e switch.  Maybe your /tmp partition is full, or clobbered.

     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



								       Page 15






PERLDIAG(1)							   PERLDIAG(1)



	 repeat	that.

     Cannot open temporary file
	 (F) The create	routine	failed for some	reason while trying to process
	 a -e switch.  Maybe your /tmp partition is full, or clobbered.

     Cannot 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.

     chmod: mode argument is missing initial 0
	 (W) A novice will sometimes say

	     chmod 777,	$filename

	 not realizing that 777	will be	interpreted as a decimal number,
	 equivalent to 01411.  Octal constants are introduced with a leading 0
	 in Perl, as in	C.

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

     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.

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

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

     Constant subroutine %s undefined
	 (S) You undefined a subroutine	which had previously been eligible for
	 inlining.  See	the section on Constant	Functions in the perlsub
	 manpage for commentary	and workarounds.

     Copy method did not return	a reference
	 (F) The method	which overloads	"=" is buggy. See the section on Copy
	 Constructor in	the overload manpage.

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






								       Page 16






PERLDIAG(1)							   PERLDIAG(1)



     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.

     Deep recursion on subroutine "%s"
	 (W) 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.

     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.

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

     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.

     Do	you need to predeclare %s?
	 (S) 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.

     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.

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



								       Page 17






PERLDIAG(1)							   PERLDIAG(1)



     elseif should be elsif
	 (S) 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.

     END failed--cleanup aborted
	 (F) An	untrapped exception was	raised while executing an END
	 subroutine.  The interpreter is immediately exited.

     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.

     Excessively long <> operator
	 (F) The contents of a <> operator may not exceed the maximum size of
	 a Perl	identifier.  If	you're just trying to glob a long list of
	 filenames, try	using the glob() operator, or put the filenames	into a
	 variable and glob that.

     Execution of %s aborted due to compilation	errors
	 (F) The final summary message when a Perl compilation fails.

     Exiting eval via %s
	 (W) You are exiting an	eval by	unconventional means, such as a	goto,
	 or a loop control statement.

     Exiting pseudo-block via %s
	 (W) You are exiting a rather special block construct (like a sort
	 block or subroutine) by unconventional	means, such as a goto, or a
	 loop control statement.  See the sort entry in	the perlfunc manpage.

     Exiting subroutine	via %s
	 (W) You are exiting a subroutine by unconventional means, such	as a
	 goto, or a loop control statement.

     Exiting substitution via %s
	 (W) You are exiting a substitution by unconventional means, such as a
	 return, a goto, or a loop control statement.

     Fatal VMS error at	%s, line %d
	 (P) An	error peculiar to VMS.	Something untoward happened in a VMS
	 system	service	or RTL routine;	Perl's exit status should provide more
	 details.  The filename	in "at %s" and the line	number in "line	%d"
	 tell you which	section	of the Perl source code	is distressed.

     fcntl is not implemented
	 (F) Your machine apparently doesn't implement fcntl().	 What is this,
	 a PDP-11 or something?



								       Page 18






PERLDIAG(1)							   PERLDIAG(1)



     Filehandle	%s never opened
	 (W) An	I/O operation was attempted on a filehandle that was never
	 initialized.  You need	to do an open()	or a socket() call, or call a
	 constructor from the FileHandle package.

     Filehandle	%s opened for only input
	 (W) You tried to write	on a read-only filehandle.  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 write the file, use	">" or ">>".  See the open entry in the
	 perlfunc manpage.

     Filehandle	opened for only	input
	 (W) You tried to write	on a read-only filehandle.  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 write the file, use	">" or ">>".  See the open entry in the
	 perlfunc manpage.

     Final $ should be \$ or $name
	 (F) You must now decide whether the final $ in	a string was meant to
	 be a literal dollar sign, or was meant	to introduce a variable	name
	 that happens to be missing.  So you have to put either	the backslash
	 or the	name.

     Final @ should be \@ or @name
	 (F) You must now decide whether the final @ in	a string was meant to
	 be a literal "at" sign, or was	meant to introduce a variable name
	 that happens to be missing.  So you have to put either	the backslash
	 or the	name.

     Format %s redefined
	 (W) You redefined a format.  To suppress this warning,	say

	     {
		 local $^W = 0;
		 eval "format NAME =...";
	     }


     Format not	terminated
	 (F) A format must be terminated by a line with	a solitary dot.	 Perl
	 got to	the end	of your	file without finding such a line.

     Found = in	conditional, should be ==
	 (W) You said

	     if	($foo =	123)

	 when you meant

	     if	($foo == 123)



								       Page 19






PERLDIAG(1)							   PERLDIAG(1)



	 (or something like that).

     gdbm store	returned %d, errno %d, key "%s"
	 (S) A warning from the	GDBM_File extension that a store failed.

     gethostent	not implemented
	 (F) Your C library apparently doesn't implement gethostent(),
	 probably because if it	did, it'd feel morally obligated to return
	 every hostname	on the Internet.

     get{sock,peer}name() on closed fd
	 (W) You tried to get a	socket or peer socket name on a	closed socket.
	 Did you forget	to check the return value of your socket() call?

     getpwnam returned invalid UIC %#o for user	"%s"
	 (S) A warning peculiar	to VMS.	 The call to sys$getuai	underlying the
	 getpwnam operator returned an invalid UIC.

     Glob not terminated
	 (F) The lexer saw a left angle	bracket	in a place where it was
	 expecting a term, so it's looking for the corresponding right angle
	 bracket, and not finding it.  Chances are you left some needed
	 parentheses out earlier in the	line, and you really meant a "less
	 than".

     Global symbol "%s"	requires explicit package name
	 (F) You've said "use strict vars", which indicates that all variables
	 must either be	lexically scoped (using	"my"), or explicitly qualified
	 to say	which package the global variable is in	(using "::").

     goto must have label
	 (F) Unlike with "next"	or "last", you're not allowed to goto an
	 unspecified destination.  See the goto	entry in the perlfunc manpage.

     Had to create %s unexpectedly
	 (S) A routine asked for a symbol from a symbol	table that ought to
	 have existed already, but for some reason it didn't, and had to be
	 created on an emergency basis to prevent a core dump.

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

     Identifier	too long
	 (F) Perl limits identifiers (names for	variables, functions, etc.) to
	 about 250 characters for simple names,	and somewhat more for compound
	 names (like $A::B).  You've exceeded Perl's limits.  Future versions
	 of Perl are likely to eliminate these arbitrary limitations.

     Ill-formed	logical	name |%s| in prime_env_iter
	 (W) A warning peculiar	to VMS.	 A logical name	was encountered	when
	 preparing to iterate over %ENV	which violates the syntactic rules



								       Page 20






PERLDIAG(1)							   PERLDIAG(1)



	 governing logical names.  Because it cannot be	translated normally,
	 it is skipped,	and will not appear in %ENV.  This may be a benign
	 occurrence, as	some software packages might directly modify logical
	 name tables and introduce nonstandard names, or it may	indicate that
	 a logical name	table has been corrupted.

     Illegal character %s (carriage return)
	 (F) A carriage	return character was found in the input.  This is an
	 error,	and not	a warning, because carriage return characters can
	 break multi-line strings, including here documents (e.g., print
	 <<EOF;).

	 Under Unix, this error	is usually caused by executing Perl code --
	 either	the main program, a module, or an eval'd string	-- that	was
	 transferred over a network connection from a non-Unix system without
	 properly converting the text file format.

	 Under systems that use	something other	than '\n' to delimit lines of
	 text, this error can also be caused by	reading	Perl code from a file
	 handle	that is	in binary mode (as set by the binmode operator).

	 In either case, the Perl code in question will	probably need to be
	 converted with	something like s/\x0D\x0A?/\n/g	before it can be
	 executed.

     Illegal division by zero
	 (F) You tried to divide a number by 0.	 Either	something was wrong in
	 your logic, or	you need to put	a conditional in to guard against
	 meaningless input.

     Illegal modulus zero
	 (F) You tried to divide a number by 0 to get the remainder.  Most
	 numbers don't take to this kindly.

     Illegal octal digit
	 (F) You used an 8 or 9	in a octal number.

     Illegal octal digit ignored
	 (W) You may have tried	to use an 8 or 9 in a octal number.
	 Interpretation	of the octal number stopped before the 8 or 9.

     Illegal switch in PERL5OPT: %s
	 (X) The PERL5OPT environment variable may only	be used	to set the
	 following switches: -[DIMUdmw].

     In	string,	@%s now	must be	written	as \@%s
	 (F) It	used to	be that	Perl would try to guess	whether	you wanted an
	 array interpolated or a literal @.  It	did this when the string was
	 first used at runtime.	 Now strings are parsed	at compile time, and
	 ambiguous instances of	@ must be disambiguated, either	by prepending
	 a backslash to	indicate a literal, or by declaring (or	using) the
	 array within the program before the string (lexically).  (Someday it



								       Page 21






PERLDIAG(1)							   PERLDIAG(1)



	 will simply assume that an unbackslashed @ interpolates an array.)

     Insecure dependency in %s
	 (F) You tried to do something that the	tainting mechanism didn't
	 like.	The tainting mechanism is turned on when you're	running	setuid
	 or setgid, or when you	specify	-T to turn it on explicitly.  The
	 tainting mechanism labels all data that's derived directly or
	 indirectly from the user, who is considered to	be unworthy of your
	 trust.	 If any	such data is used in a "dangerous" operation, you get
	 this error.  See the perlsec manpage for more information.

     Insecure directory	in %s
	 (F) You can't use system(), exec(), or	a piped	open in	a setuid or
	 setgid	script if $ENV{PATH} contains a	directory that is writable by
	 the world.  See the perlsec manpage.

     Insecure PATH
	 (F) You can't use system(), exec(), or	a piped	open in	a setuid or
	 setgid	script if $ENV{PATH} is	derived	from data supplied (or
	 potentially supplied) by the user.  The script	must set the path to a
	 known value, using trustworthy	data.  See the perlsec manpage.

     Integer overflow in hex number
	 (S) The literal hex number you	have specified is too big for your
	 architecture. On a 32-bit architecture	the largest hex	literal	is
	 0xFFFFFFFF.

     Integer overflow in octal number
	 (S) The literal octal number you have specified is too	big for	your
	 architecture. On a 32-bit architecture	the largest octal literal is
	 037777777777.

     Internal inconsistency in tracking	vforks
	 (S) A warning peculiar	to VMS.	 Perl keeps track of the number	of
	 times you've called fork and exec, to determine whether the current
	 call to exec should affect the	current	script or a subprocess (see
	 the exec entry	in the perlvms manpage).  Somehow, this	count has
	 become	scrambled, so Perl is making a guess and treating this exec as
	 a request to terminate	the Perl script	and execute the	specified
	 command.

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

     internal error: glob failed
	 (P) Something went wrong with the external program(s) used for	glob
	 and <*.c>.  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.
	 full_csh='/usr/bin/tcsh'); otherwise, make them all empty (except
	 that d_csh should be 'undef') so that Perl will think csh is missing.
	 In either case, after editing config.sh, run ./Configure -S and



								       Page 22






PERLDIAG(1)							   PERLDIAG(1)



	 rebuild Perl.

     internal urp in regexp at /%s/
	 (P) Something went badly awry in the regular expression parser.

     invalid []	range in regexp
	 (F) The range specified in a character	class had a minimum character
	 greater than the maximum character.  See the perlre manpage.

     Invalid conversion	in %s: "%s"
	 (W) Perl does not understand the given	format conversion.  See	the
	 sprintf entry in the perlfunc manpage.

     Invalid type in pack: '%s'
	 (F) The given character is not	a valid	pack type.  See	the pack entry
	 in the	perlfunc manpage.  (W) The given character is not a valid pack
	 type but used to be silently ignored.

     Invalid type in unpack: '%s'
	 (F) The given character is not	a valid	unpack type.  See the unpack
	 entry in the perlfunc manpage.	 (W) The given character is not	a
	 valid unpack type but used to be silently ignored.

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

     junk on end of regexp
	 (P) The regular expression parser is confused.

     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 the last entry in the perlfunc manpage.

     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
	 the last entry	in the perlfunc	manpage.

     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
	 the last entry	in the perlfunc	manpage.

     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 the	listen entry
	 in the	perlfunc manpage.






								       Page 23






PERLDIAG(1)							   PERLDIAG(1)



     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 the overload
	 manpage.

     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.

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

     Missing $ on loop variable
	 (F) Apparently	you've been programming	in 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.

     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.

     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.

     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.

     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.

     Modification of noncreatable 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.

     Modification of noncreatable hash value attempted,	subscript "%s"
	 (F) You tried to make a hash value spring into	existence, and it
	 couldn't be created for some peculiar reason.




								       Page 24






PERLDIAG(1)							   PERLDIAG(1)



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

     msg%s not implemented
	 (F) You don't have System V message IPC on your system.

     Multidimensional syntax %s	not supported
	 (W) Multidimensional arrays aren't written like $foo[1,2,3].  They're
	 written like $foo[1][2][3], as	in C.

     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 use vars pragma is
	 provided for just this	purpose.

     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.

     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, *?, +?, and ??
	 appear	to be nested quantifiers, but aren't.  See the perlre manpage.

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

     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 the perlsec manpage.

     No	-e allowed in setuid scripts
	 (F) A setuid script can't be specified	by the user.

     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 use or 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 the	use entry in the perlfunc manpage and the import entry



								       Page 25






PERLDIAG(1)							   PERLDIAG(1)



	 in the	perlfunc manpage. 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
	 use or	import or in the constant name at the line where this error
	 was triggered?

     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.

     No	DB::DB routine defined
	 (F) The currently executing code was compiled with the	-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.

     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	the
	 SDBM_File manpage.

     No	DBsub routine
	 (F) The currently executing code was compiled with the	-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.

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

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

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

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




								       Page 26






PERLDIAG(1)							   PERLDIAG(1)



     No	Perl script found in input
	 (F) You called	perl -x, but no	line was found in the file beginning
	 with #! and containing	the word "perl".

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

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

     No	space allowed after -I
	 (F) The argument to -I	must follow the	-I immediately with no
	 intervening space.

     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.

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

     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	the perlref manpage.

     Not a format reference
	 (F) I'm not sure how you managed to generate a	reference to an

 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