📄 carp.3
字号:
.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05).\".\" Standard preamble:.\" ========================================================================.de Sh \" Subsection heading.br.if t .Sp.ne 5.PP\fB\\$1\fR.PP...de Sp \" Vertical space (when we can't use .PP).if t .sp .5v.if n .sp...de Vb \" Begin verbatim text.ft CW.nf.ne \\$1...de Ve \" End verbatim text.ft R.fi...\" Set up some character translations and predefined strings. \*(-- will.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left.\" double quote, and \*(R" will give a right double quote. \*(C+ will.\" give a nicer C++. Capital omega is used to do unbreakable dashes and.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,.\" nothing in troff, for use with C<>..tr \(*W-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'.ie n \{\. ds -- \(*W-. ds PI pi. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch. ds L" "". ds R" "". ds C` "". ds C' ""'br\}.el\{\. ds -- \|\(em\|. ds PI \(*p. ds L" ``. ds R" '''br\}.\".\" Escape single quotes in literal strings from groff's Unicode transform..ie \n(.g .ds Aq \(aq.el .ds Aq '.\".\" If the F register is turned on, we'll generate index entries on stderr for.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index.\" entries marked with X<> in POD. Of course, you'll have to process the.\" output yourself in some meaningful fashion..ie \nF \{\. de IX. tm Index:\\$1\t\\n%\t"\\$2"... nr % 0. rr F.\}.el \{\. de IX...\}.\".\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2)..\" Fear. Run. Save yourself. No user-serviceable parts.. \" fudge factors for nroff and troff.if n \{\. ds #H 0. ds #V .8m. ds #F .3m. ds #[ \f1. ds #] \fP.\}.if t \{\. ds #H ((1u-(\\\\n(.fu%2u))*.13m). ds #V .6m. ds #F 0. ds #[ \&. ds #] \&.\}. \" simple accents for nroff and troff.if n \{\. ds ' \&. ds ` \&. ds ^ \&. ds , \&. ds ~ ~. ds /.\}.if t \{\. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u". ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'.\}. \" troff and (daisy-wheel) nroff accents.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'.ds 8 \h'\*(#H'\(*b\h'-\*(#H'.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#].ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#].ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#].ds ae a\h'-(\w'a'u*4/10)'e.ds Ae A\h'-(\w'A'u*4/10)'E. \" corrections for vroff.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'. \" for low resolution devices (crt and lpr).if \n(.H>23 .if \n(.V>19 \\{\. ds : e. ds 8 ss. ds o a. ds d- d\h'-1'\(ga. ds D- D\h'-1'\(hy. ds th \o'bp'. ds Th \o'LP'. ds ae ae. ds Ae AE.\}.rm #[ #] #H #V #F C.\" ========================================================================.\".IX Title "Carp 3".TH Carp 3 "2007-12-18" "perl v5.10.0" "Perl Programmers Reference Guide".\" For nroff, turn off justification. Always turn off hyphenation; it makes.\" way too many mistakes in technical documents..if n .ad l.nh.SH "NAME"carp \- warn of errors (from perspective of caller).PPcluck \- warn of errors with stack backtrace (not exported by default).PPcroak \- die of errors (from perspective of caller).PPconfess \- die of errors with stack backtrace.SH "SYNOPSIS".IX Header "SYNOPSIS".Vb 2\& use Carp;\& croak "We\*(Aqre outta here!";\&\& use Carp qw(cluck);\& cluck "This is how we got here!";.Ve.SH "DESCRIPTION".IX Header "DESCRIPTION"The Carp routines are useful in your own modules becausethey act like \fIdie()\fR or \fIwarn()\fR, but with a message which is morelikely to be useful to a user of your module. In the case ofcluck, confess, and longmess that context is a summary of everycall in the call-stack. For a shorter message you can use \f(CW\*(C`carp\*(C'\fRor \f(CW\*(C`croak\*(C'\fR which report the error as being from where your modulewas called. There is no guarantee that that is where the errorwas, but it is a good educated guess..PPYou can also alter the way the output and logic of \f(CW\*(C`Carp\*(C'\fR works, bychanging some global variables in the \f(CW\*(C`Carp\*(C'\fR namespace. See thesection on \f(CW\*(C`GLOBAL VARIABLES\*(C'\fR below..PPHere is a more complete description of how c<carp> and c<croak> work.What they do is search the call-stack for a function call stack wherethey have not been told that there shouldn't be an error. If everycall is marked safe, they give up and give a full stack backtraceinstead. In other words they presume that the first likely lookingpotential suspect is guilty. Their rules for telling whethera call shouldn't generate errors work as follows:.IP "1." 4Any call from a package to itself is safe..IP "2." 4Packages claim that there won't be errors on calls to or frompackages explicitly marked as safe by inclusion in \f(CW@CARP_NOT\fR, or(if that array is empty) \f(CW@ISA\fR. The ability to override what\&\f(CW@ISA\fR says is new in 5.8..IP "3." 4The trust in item 2 is transitive. If A trusts B, and Btrusts C, then A trusts C. So if you do not override \f(CW@ISA\fRwith \f(CW@CARP_NOT\fR, then this trust relationship is identical to,\&\*(L"inherits from\*(R"..IP "4." 4Any call from an internal Perl module is safe. (Nothing keepsuser modules from marking themselves as internal to Perl, butthis practice is discouraged.).IP "5." 4Any call to Perl's warning system (eg Carp itself) is safe.(This rule is what keeps it from reporting the error at thepoint where you call \f(CW\*(C`carp\*(C'\fR or \f(CW\*(C`croak\*(C'\fR.).IP "6." 4\&\f(CW$Carp::CarpLevel\fR can be set to skip a fixed number of additionalcall levels. Using this is not recommended because it is verydifficult to get it to behave correctly..Sh "Forcing a Stack Trace".IX Subsection "Forcing a Stack Trace"As a debugging aid, you can force Carp to treat a croak as a confessand a carp as a cluck across \fIall\fR modules. In other words, force adetailed stack trace to be given. This can be very helpful when tryingto understand why, or from where, a warning or error is being generated..PPThis feature is enabled by 'importing' the non-existent symbol\&'verbose'. You would typically enable it by saying.PP.Vb 1\& perl \-MCarp=verbose script.pl.Ve.PPor by including the string \f(CW\*(C`MCarp=verbose\*(C'\fR in the \s-1PERL5OPT\s0environment variable..PPAlternately, you can set the global variable \f(CW$Carp::Verbose\fR to true.See the \f(CW\*(C`GLOBAL VARIABLES\*(C'\fR section below..SH "GLOBAL VARIABLES".IX Header "GLOBAL VARIABLES".ie n .Sh "$Carp::MaxEvalLen".el .Sh "\f(CW$Carp::MaxEvalLen\fP".IX Subsection "$Carp::MaxEvalLen"This variable determines how many characters of a string-eval are tobe shown in the output. Use a value of \f(CW0\fR to show all text..PPDefaults to \f(CW0\fR..ie n .Sh "$Carp::MaxArgLen".el .Sh "\f(CW$Carp::MaxArgLen\fP".IX Subsection "$Carp::MaxArgLen"This variable determines how many characters of each argument to afunction to print. Use a value of \f(CW0\fR to show the full length of theargument..PPDefaults to \f(CW64\fR..ie n .Sh "$Carp::MaxArgNums".el .Sh "\f(CW$Carp::MaxArgNums\fP".IX Subsection "$Carp::MaxArgNums"This variable determines how many arguments to each function to show.Use a value of \f(CW0\fR to show all arguments to a function call..PPDefaults to \f(CW8\fR..ie n .Sh "$Carp::Verbose".el .Sh "\f(CW$Carp::Verbose\fP".IX Subsection "$Carp::Verbose"This variable makes \f(CW\*(C`carp\*(C'\fR and \f(CW\*(C`cluck\*(C'\fR generate stack backtracesjust like \f(CW\*(C`cluck\*(C'\fR and \f(CW\*(C`confess\*(C'\fR. This is how \f(CW\*(C`use Carp \*(Aqverbose\*(Aq\*(C'\fRis implemented internally..PPDefaults to \f(CW0\fR..ie n .Sh "%Carp::Internal".el .Sh "\f(CW%Carp::Internal\fP".IX Subsection "%Carp::Internal"This says what packages are internal to Perl. \f(CW\*(C`Carp\*(C'\fR will neverreport an error as being from a line in a package that is internal toPerl. For example:.PP.Vb 3\& $Carp::Internal{ _\|_PACKAGE_\|_ }++;\& # time passes...\& sub foo { ... or confess("whatever") };.Ve.PPwould give a full stack backtrace starting from the first calleroutside of _\|_PACKAGE_\|_. (Unless that package was also internal toPerl.).ie n .Sh "%Carp::CarpInternal".el .Sh "\f(CW%Carp::CarpInternal\fP".IX Subsection "%Carp::CarpInternal"This says which packages are internal to Perl's warning system. Forgenerating a full stack backtrace this is the same as being internalto Perl, the stack backtrace will not start inside packages that arelisted in \f(CW%Carp::CarpInternal\fR. But it is slightly different forthe summary message generated by \f(CW\*(C`carp\*(C'\fR or \f(CW\*(C`croak\*(C'\fR. There errorswill not be reported on any lines that are calling packages in\&\f(CW%Carp::CarpInternal\fR..PPFor example \f(CW\*(C`Carp\*(C'\fR itself is listed in \f(CW%Carp::CarpInternal\fR.Therefore the full stack backtrace from \f(CW\*(C`confess\*(C'\fR will not startinside of \f(CW\*(C`Carp\*(C'\fR, and the short message from calling \f(CW\*(C`croak\*(C'\fR isnot placed on the line where \f(CW\*(C`croak\*(C'\fR was called..ie n .Sh "$Carp::CarpLevel".el .Sh "\f(CW$Carp::CarpLevel\fP".IX Subsection "$Carp::CarpLevel"This variable determines how many additional call frames are to beskipped that would not otherwise be when reporting where an erroroccurred on a call to one of \f(CW\*(C`Carp\*(C'\fR's functions. It is fairly easyto count these call frames on calls that generate a full stackbacktrace. However it is much harder to do this accounting for callsthat generate a short message. Usually people skip too many callframes. If they are lucky they skip enough that \f(CW\*(C`Carp\*(C'\fR goes all ofthe way through the call stack, realizes that something is wrong, andthen generates a full stack backtrace. If they are unlucky then theerror is reported from somewhere misleading very high in the callstack..PPTherefore it is best to avoid \f(CW$Carp::CarpLevel\fR. Instead use\&\f(CW@CARP_NOT\fR, \f(CW%Carp::Internal\fR and \f(CW%Carp::CarpInternal\fR>..PPDefaults to \f(CW0\fR..SH "BUGS".IX Header "BUGS"The Carp routines don't handle exception objects currently.If called with a first argument that is a reference, they simplycall \fIdie()\fR or \fIwarn()\fR, as appropriate.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -