8 our $MaxArgLen = 64; # How much of each argument to print. 0 = all.
9 our $MaxArgNums = 8; # How many arguments to print. 0 = all.
12 our @ISA = ('Exporter');
13 our @EXPORT = qw(confess croak carp);
14 our @EXPORT_OK = qw(cluck verbose longmess shortmess);
15 our @EXPORT_FAIL = qw(verbose); # hook to enable verbose mode
17 # The members of %Internal are packages that are internal to perl.
18 # Carp will not report errors from within these packages if it
19 # can. The members of %CarpInternal are internal to Perl's warning
20 # system. Carp will not report errors from within these packages
21 # either, and will not report calls *to* these packages for carp and
22 # croak. They replace $CarpLevel, which is deprecated. The
23 # $Max(EvalLen|(Arg(Len|Nums)) variables are used to specify how the eval
24 # text and function arguments should be formatted when printed.
26 # disable these by default, so they can live w/o require Carp
27 $CarpInternal{Carp}++;
28 $CarpInternal{warnings}++;
29 $Internal{Exporter}++;
30 $Internal{'Exporter::Heavy'}++;
32 # if the caller specifies verbose usage ("perl -MCarp=verbose script.pl")
33 # then the following method will be called by the Exporter which knows
34 # to do this thanks to @EXPORT_FAIL, above. $_[1] will contain the word
37 sub export_fail { shift; $Verbose = shift if $_[0] eq 'verbose'; @_ }
40 # Icky backwards compatibility wrapper. :-(
42 # The story is that the original implementation hard-coded the
43 # number of call levels to go back, so calls to longmess were off
44 # by one. Other code began calling longmess and expecting this
45 # behaviour, so the replacement has to emulate that behaviour.
46 my $call_pack = defined (*CORE::GLOBAL::caller{CODE}) ? *CORE::GLOBAL::caller{CODE}->() : caller();
47 if ($Internal{$call_pack} or $CarpInternal{$call_pack}) {
48 return longmess_heavy(@_);
51 local $CarpLevel = $CarpLevel + 1;
52 return longmess_heavy(@_);
57 # Icky backwards compatibility wrapper. :-(
58 local @CARP_NOT = defined (*CORE::GLOBAL::caller{CODE}) ? *CORE::GLOBAL::caller{CODE}->() : caller();
62 sub croak { die shortmess @_ }
63 sub confess { die longmess @_ }
64 sub carp { warn shortmess @_ }
65 sub cluck { warn longmess @_ }
68 my $i = shift(@_) + 1;
72 qw(pack file line sub has_args wantarray evaltext is_require)
73 } = defined (*CORE::GLOBAL::caller::{CODE}) ? *CORE::GLOBAL::{caller}->($i) : caller($i);
75 unless (defined $call_info{pack}) {
79 my $sub_name = Carp::get_subname(\%call_info);
80 if ($call_info{has_args}) {
81 my @args = map {Carp::format_arg($_)} @DB::args;
82 if ($MaxArgNums and @args > $MaxArgNums) { # More than we want to show?
86 # Push the args onto the subroutine
87 $sub_name .= '(' . join (', ', @args) . ')';
89 $call_info{sub_name} = $sub_name;
90 return wantarray() ? %call_info : \%call_info;
93 # Transform an argument to a function into a string.
97 $arg = defined($overload::VERSION) ? overload::StrVal($arg) : "$arg";
101 $arg = str_len_trim($arg, $MaxArgLen);
104 $arg = "'$arg'" unless $arg =~ /^-?[\d.]+\z/;
109 # The following handling of "control chars" is direct from
110 # the original code - it is broken on Unicode though.
113 or $arg =~ s/([[:cntrl:]]|[[:^ascii:]])/sprintf("\\x{%x}",ord($1))/eg;
117 # Takes an inheritance cache and a package and returns
118 # an anon hash of known inheritances and anon array of
119 # inheritances which consequences have not been figured
124 $cache->{$pkg} ||= [{$pkg => $pkg}, [trusts_directly($pkg)]];
125 return @{$cache->{$pkg}};
128 # Takes the info from caller() and figures out the name of
129 # the sub/require/eval
132 if (defined($info->{evaltext})) {
133 my $eval = $info->{evaltext};
134 if ($info->{is_require}) {
135 return "require $eval";
138 $eval =~ s/([\\\'])/\\$1/g;
139 return "eval '" . str_len_trim($eval, $MaxEvalLen) . "'";
143 return ($info->{sub} eq '(eval)') ? 'eval {...}' : $info->{sub};
146 # Figures out what call (from the point of view of the caller)
147 # the long error backtrace should start at.
150 my $lvl = $CarpLevel;
153 my $pkg = defined (*CORE::GLOBAL::caller{CODE}) ? *CORE::GLOBAL::caller{CODE}->($i) : caller($i);
154 unless(defined($pkg)) {
155 # This *shouldn't* happen.
158 $i = long_error_loc();
162 # OK, now I am irritated.
166 redo if $CarpInternal{$pkg};
167 redo unless 0 > --$lvl;
168 redo if $Internal{$pkg};
175 return @_ if ref($_[0]); # don't break references as exceptions
176 my $i = long_error_loc();
177 return ret_backtrace($i, @_);
180 # Returns a full stack backtrace starting from where it is
183 my ($i, @error) = @_;
185 my $err = join '', @error;
189 if (defined &threads::tid) {
190 my $tid = threads->tid;
191 $tid_msg = " thread $tid" if $tid;
194 my %i = caller_info($i);
195 $mess = "$err at $i{file} line $i{line}$tid_msg\n";
197 while (my %i = caller_info(++$i)) {
198 $mess .= "\t$i{sub_name} called at $i{file} line $i{line}$tid_msg\n";
205 my ($i, @error) = @_;
206 my $err = join '', @error;
210 if (defined &threads::tid) {
211 my $tid = threads->tid;
212 $tid_msg = " thread $tid" if $tid;
215 my %i = caller_info($i);
216 return "$err at $i{file} line $i{line}$tid_msg\n";
220 sub short_error_loc {
221 # You have to create your (hash)ref out here, rather than defaulting it
222 # inside trusts *on a lexical*, as you want it to persist across calls.
223 # (You can default it on $_[2], but that gets messy)
226 my $lvl = $CarpLevel;
229 my $called = defined (*CORE::GLOBAL::caller{CODE}) ? *CORE::GLOBAL::caller{CODE}->($i) : caller($i);
231 my $caller = defined (*CORE::GLOBAL::caller{CODE}) ? *CORE::GLOBAL::caller{CODE}->($i) : caller($i);
233 return 0 unless defined($caller); # What happened?
234 redo if $Internal{$caller};
235 redo if $CarpInternal{$caller};
236 redo if $CarpInternal{$called};
237 redo if trusts($called, $caller, $cache);
238 redo if trusts($caller, $called, $cache);
239 redo unless 0 > --$lvl;
245 sub shortmess_heavy {
246 return longmess_heavy(@_) if $Verbose;
247 return @_ if ref($_[0]); # don't break references as exceptions
248 my $i = short_error_loc();
257 # If a string is too long, trims it with ...
260 my $max = shift || 0;
261 if (2 < $max and $max < length($str)) {
262 substr($str, $max - 3) = '...';
267 # Takes two packages and an optional cache. Says whether the
268 # first inherits from the second.
270 # Recursive versions of this have to work to avoid certain
271 # possible endless loops, and when following long chains of
272 # inheritance are less efficient.
277 my ($known, $partial) = get_status($cache, $child);
278 # Figure out consequences until we have an answer
279 while (@$partial and not exists $known->{$parent}) {
280 my $anc = shift @$partial;
281 next if exists $known->{$anc};
283 my ($anc_knows, $anc_partial) = get_status($cache, $anc);
284 my @found = keys %$anc_knows;
285 @$known{@found} = ();
286 push @$partial, @$anc_partial;
288 return exists $known->{$parent};
291 # Takes a package and gives a list of those trusted directly
292 sub trusts_directly {
296 return @{"$class\::CARP_NOT"}
297 ? @{"$class\::CARP_NOT"}
307 carp - warn of errors (from perspective of caller)
309 cluck - warn of errors with stack backtrace
310 (not exported by default)
312 croak - die of errors (from perspective of caller)
314 confess - die of errors with stack backtrace
319 croak "We're outta here!";
322 cluck "This is how we got here!";
326 The Carp routines are useful in your own modules because
327 they act like die() or warn(), but with a message which is more
328 likely to be useful to a user of your module. In the case of
329 cluck, confess, and longmess that context is a summary of every
330 call in the call-stack. For a shorter message you can use C<carp>
331 or C<croak> which report the error as being from where your module
332 was called. There is no guarantee that that is where the error
333 was, but it is a good educated guess.
335 You can also alter the way the output and logic of C<Carp> works, by
336 changing some global variables in the C<Carp> namespace. See the
337 section on C<GLOBAL VARIABLES> below.
339 Here is a more complete description of how C<carp> and C<croak> work.
340 What they do is search the call-stack for a function call stack where
341 they have not been told that there shouldn't be an error. If every
342 call is marked safe, they give up and give a full stack backtrace
343 instead. In other words they presume that the first likely looking
344 potential suspect is guilty. Their rules for telling whether
345 a call shouldn't generate errors work as follows:
351 Any call from a package to itself is safe.
355 Packages claim that there won't be errors on calls to or from
356 packages explicitly marked as safe by inclusion in C<@CARP_NOT>, or
357 (if that array is empty) C<@ISA>. The ability to override what
358 @ISA says is new in 5.8.
362 The trust in item 2 is transitive. If A trusts B, and B
363 trusts C, then A trusts C. So if you do not override C<@ISA>
364 with C<@CARP_NOT>, then this trust relationship is identical to,
369 Any call from an internal Perl module is safe. (Nothing keeps
370 user modules from marking themselves as internal to Perl, but
371 this practice is discouraged.)
375 Any call to Perl's warning system (eg Carp itself) is safe.
376 (This rule is what keeps it from reporting the error at the
377 point where you call C<carp> or C<croak>.)
381 C<$Carp::CarpLevel> can be set to skip a fixed number of additional
382 call levels. Using this is not recommended because it is very
383 difficult to get it to behave correctly.
387 =head2 Forcing a Stack Trace
389 As a debugging aid, you can force Carp to treat a croak as a confess
390 and a carp as a cluck across I<all> modules. In other words, force a
391 detailed stack trace to be given. This can be very helpful when trying
392 to understand why, or from where, a warning or error is being generated.
394 This feature is enabled by 'importing' the non-existent symbol
395 'verbose'. You would typically enable it by saying
397 perl -MCarp=verbose script.pl
399 or by including the string C<-MCarp=verbose> in the PERL5OPT
400 environment variable.
402 Alternately, you can set the global variable C<$Carp::Verbose> to true.
403 See the C<GLOBAL VARIABLES> section below.
405 =head1 GLOBAL VARIABLES
407 =head2 $Carp::MaxEvalLen
409 This variable determines how many characters of a string-eval are to
410 be shown in the output. Use a value of C<0> to show all text.
414 =head2 $Carp::MaxArgLen
416 This variable determines how many characters of each argument to a
417 function to print. Use a value of C<0> to show the full length of the
422 =head2 $Carp::MaxArgNums
424 This variable determines how many arguments to each function to show.
425 Use a value of C<0> to show all arguments to a function call.
429 =head2 $Carp::Verbose
431 This variable makes C<carp> and C<cluck> generate stack backtraces
432 just like C<cluck> and C<confess>. This is how C<use Carp 'verbose'>
433 is implemented internally.
439 This variable, I<in your package>, says which packages are I<not> to be
440 considered as the location of an error. The C<carp()> and C<cluck()>
441 functions will skip over callers when reporting where an error occurred.
443 NB: This variable must be in the package's symbol table, thus:
446 our @CARP_NOT; # file scope
447 use vars qw(@CARP_NOT); # package scope
448 @My::Package::CARP_NOT = ... ; # explicit package variable
451 sub xyz { ... @CARP_NOT = ... } # w/o declarations above
452 my @CARP_NOT; # even at top-level
456 package My::Carping::Package;
459 sub bar { .... or _error('Wrong input') }
461 # temporary control of where'ness, __PACKAGE__ is implicit
462 local @CARP_NOT = qw(My::Friendly::Caller);
466 This would make C<Carp> report the error as coming from a caller not
467 in C<My::Carping::Package>, nor from C<My::Friendly::Caller>.
469 Also read the L</DESCRIPTION> section above, about how C<Carp> decides
470 where the error is reported from.
472 Use C<@CARP_NOT>, instead of C<$Carp::CarpLevel>.
474 Overrides C<Carp>'s use of C<@ISA>.
476 =head2 %Carp::Internal
478 This says what packages are internal to Perl. C<Carp> will never
479 report an error as being from a line in a package that is internal to
482 $Carp::Internal{ (__PACKAGE__) }++;
484 sub foo { ... or confess("whatever") };
486 would give a full stack backtrace starting from the first caller
487 outside of __PACKAGE__. (Unless that package was also internal to
490 =head2 %Carp::CarpInternal
492 This says which packages are internal to Perl's warning system. For
493 generating a full stack backtrace this is the same as being internal
494 to Perl, the stack backtrace will not start inside packages that are
495 listed in C<%Carp::CarpInternal>. But it is slightly different for
496 the summary message generated by C<carp> or C<croak>. There errors
497 will not be reported on any lines that are calling packages in
498 C<%Carp::CarpInternal>.
500 For example C<Carp> itself is listed in C<%Carp::CarpInternal>.
501 Therefore the full stack backtrace from C<confess> will not start
502 inside of C<Carp>, and the short message from calling C<croak> is
503 not placed on the line where C<croak> was called.
505 =head2 $Carp::CarpLevel
507 This variable determines how many additional call frames are to be
508 skipped that would not otherwise be when reporting where an error
509 occurred on a call to one of C<Carp>'s functions. It is fairly easy
510 to count these call frames on calls that generate a full stack
511 backtrace. However it is much harder to do this accounting for calls
512 that generate a short message. Usually people skip too many call
513 frames. If they are lucky they skip enough that C<Carp> goes all of
514 the way through the call stack, realizes that something is wrong, and
515 then generates a full stack backtrace. If they are unlucky then the
516 error is reported from somewhere misleading very high in the call
519 Therefore it is best to avoid C<$Carp::CarpLevel>. Instead use
520 C<@CARP_NOT>, C<%Carp::Internal> and C<%Carp::CarpInternal>.
526 The Carp routines don't handle exception objects currently.
527 If called with a first argument that is a reference, they simply
528 call die() or warn(), as appropriate.