Diagnostic Messages

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

Class Meaning
(W) warning (optional)
(D) deprecation (optional)
(S) severe warning (mandatory)
(F) fatal error (trappable)
(P) An internal error (panic) that you should never see (trappable)
(X) very fatal error (non-trappable)
(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 before printing it. Trappable errors may be trapped using eval. You can also capture control before a trappable error "dies" by setting $SIG{__DIE__} to a subroutine reference, but if you don't call die within that handler, the fatal exception is still thrown when you return from it. In other words, you're not allowed to "de-fatalize" an exception that way. You must use an eval wrapper for that.

In the following messages %s stands for an interpolated string that is determined only when the message is generated. (Similarly, %d stands for an interpolated number - think printf formats, but we use %d to mean a number in any base here.) Note that some messages begin with %s - which means that listing them alphabetically is problematical. You should search among these messages if the one you are looking for does not appear in the expected place. The symbols " % - ? @ sort before alphabetic characters, while [ and sort after.

References of the form, "See unpack," refer to entries in Functions.

If you decide a bug is a Perl bug and not your bug, you should try to reduce it to a minimal test case and then report it with the perlbug program that comes with Perl.