Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / man / man3 / Carp.3
CommitLineData
86530b38
AT
1.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sh \" Subsection heading
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
13.de Sp \" Vertical space (when we can't use .PP)
14.if t .sp .5v
15.if n .sp
16..
17.de Vb \" Begin verbatim text
18.ft CW
19.nf
20.ne \\$1
21..
22.de Ve \" End verbatim text
23.ft R
24.fi
25..
26.\" Set up some character translations and predefined strings. \*(-- will
27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28.\" double quote, and \*(R" will give a right double quote. | will give a
29.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31.\" expand to `' in nroff, nothing in troff, for use with C<>.
32.tr \(*W-|\(bv\*(Tr
33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34.ie n \{\
35. ds -- \(*W-
36. ds PI pi
37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39. ds L" ""
40. ds R" ""
41. ds C` ""
42. ds C' ""
43'br\}
44.el\{\
45. ds -- \|\(em\|
46. ds PI \(*p
47. ds L" ``
48. ds R" ''
49'br\}
50.\"
51.\" If the F register is turned on, we'll generate index entries on stderr for
52.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53.\" entries marked with X<> in POD. Of course, you'll have to process the
54.\" output yourself in some meaningful fashion.
55.if \nF \{\
56. de IX
57. tm Index:\\$1\t\\n%\t"\\$2"
58..
59. nr % 0
60. rr F
61.\}
62.\"
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes
64.\" way too many mistakes in technical documents.
65.hy 0
66.if n .na
67.\"
68.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69.\" Fear. Run. Save yourself. No user-serviceable parts.
70. \" fudge factors for nroff and troff
71.if n \{\
72. ds #H 0
73. ds #V .8m
74. ds #F .3m
75. ds #[ \f1
76. ds #] \fP
77.\}
78.if t \{\
79. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80. ds #V .6m
81. ds #F 0
82. ds #[ \&
83. ds #] \&
84.\}
85. \" simple accents for nroff and troff
86.if n \{\
87. ds ' \&
88. ds ` \&
89. ds ^ \&
90. ds , \&
91. ds ~ ~
92. ds /
93.\}
94.if t \{\
95. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101.\}
102. \" troff and (daisy-wheel) nroff accents
103.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110.ds ae a\h'-(\w'a'u*4/10)'e
111.ds Ae A\h'-(\w'A'u*4/10)'E
112. \" corrections for vroff
113.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115. \" for low resolution devices (crt and lpr)
116.if \n(.H>23 .if \n(.V>19 \
117\{\
118. ds : e
119. ds 8 ss
120. ds o a
121. ds d- d\h'-1'\(ga
122. ds D- D\h'-1'\(hy
123. ds th \o'bp'
124. ds Th \o'LP'
125. ds ae ae
126. ds Ae AE
127.\}
128.rm #[ #] #H #V #F C
129.\" ========================================================================
130.\"
131.IX Title "Carp 3"
132.TH Carp 3 "2002-06-01" "perl v5.8.0" "Perl Programmers Reference Guide"
133.SH "NAME"
134carp \- warn of errors (from perspective of caller)
135.PP
136cluck \- warn of errors with stack backtrace
137 (not exported by default)
138.PP
139croak \- die of errors (from perspective of caller)
140.PP
141confess \- die of errors with stack backtrace
142.PP
143shortmess \- return the message that carp and croak produce
144.PP
145longmess \- return the message that cluck and confess produce
146.SH "SYNOPSIS"
147.IX Header "SYNOPSIS"
148.Vb 2
149\& use Carp;
150\& croak "We're outta here!";
151.Ve
152.PP
153.Vb 2
154\& use Carp qw(cluck);
155\& cluck "This is how we got here!";
156.Ve
157.PP
158.Vb 2
159\& print FH Carp::shortmess("This will have caller's details added");
160\& print FH Carp::longmess("This will have stack backtrace added");
161.Ve
162.SH "DESCRIPTION"
163.IX Header "DESCRIPTION"
164The Carp routines are useful in your own modules because
165they act like \fIdie()\fR or \fIwarn()\fR, but with a message which is more
166likely to be useful to a user of your module. In the case of
167cluck, confess, and longmess that context is a summary of every
168call in the call\-stack. For a shorter message you can use carp,
169croak or shortmess which report the error as being from where
170your module was called. There is no guarantee that that is where
171the error was, but it is a good educated guess.
172.PP
173Here is a more complete description of how shortmess works. What
174it does is search the call-stack for a function call stack where
175it hasn't been told that there shouldn't be an error. If every
176call is marked safe, it then gives up and gives a full stack
177backtrace instead. In other words it presumes that the first likely
178looking potential suspect is guilty. Its rules for telling whether
179a call shouldn't generate errors work as follows:
180.IP "1." 4
181Any call from a package to itself is safe.
182.IP "2." 4
183Packages claim that there won't be errors on calls to or from
184packages explicitly marked as safe by inclusion in \f(CW@CARP_NOT\fR, or
185(if that array is empty) \f(CW@ISA\fR. The ability to override what
186\&\f(CW@ISA\fR says is new in 5.8.
187.IP "3." 4
188The trust in item 2 is transitive. If A trusts B, and B
189trusts C, then A trusts C. So if you do not override \f(CW@ISA\fR
190with \f(CW@CARP_NOT\fR, then this trust relationship is identical to,
191\&\*(L"inherits from\*(R".
192.IP "4." 4
193Any call from an internal Perl module is safe. (Nothing keeps
194user modules from marking themselves as internal to Perl, but
195this practice is discouraged.)
196.IP "5." 4
197Any call to Carp is safe. (This rule is what keeps it from
198reporting the error where you call carp/croak/shortmess.)
199.Sh "Forcing a Stack Trace"
200.IX Subsection "Forcing a Stack Trace"
201As a debugging aid, you can force Carp to treat a croak as a confess
202and a carp as a cluck across \fIall\fR modules. In other words, force a
203detailed stack trace to be given. This can be very helpful when trying
204to understand why, or from where, a warning or error is being generated.
205.PP
206This feature is enabled by 'importing' the non-existent symbol
207\&'verbose'. You would typically enable it by saying
208.PP
209.Vb 1
210\& perl -MCarp=verbose script.pl
211.Ve
212.PP
213or by including the string \f(CW\*(C`MCarp=verbose\*(C'\fR in the \s-1PERL5OPT\s0
214environment variable.
215.SH "BUGS"
216.IX Header "BUGS"
217The Carp routines don't handle exception objects currently.
218If called with a first argument that is a reference, they simply
219call \fIdie()\fR or \fIwarn()\fR, as appropriate.