xref: /openbsd/gnu/usr.bin/perl/dist/Carp/lib/Carp.pm (revision 8529ddd3)
1package Carp;
2
3{ use 5.006; }
4use strict;
5use warnings;
6BEGIN {
7    # Very old versions of warnings.pm load Carp.  This can go wrong due
8    # to the circular dependency.  If warnings is invoked before Carp,
9    # then warnings starts by loading Carp, then Carp (above) tries to
10    # invoke warnings, and gets nothing because warnings is in the process
11    # of loading and hasn't defined its import method yet.  If we were
12    # only turning on warnings ("use warnings" above) this wouldn't be too
13    # bad, because Carp would just gets the state of the -w switch and so
14    # might not get some warnings that it wanted.  The real problem is
15    # that we then want to turn off Unicode warnings, but "no warnings
16    # 'utf8'" won't be effective if we're in this circular-dependency
17    # situation.  So, if warnings.pm is an affected version, we turn
18    # off all warnings ourselves by directly setting ${^WARNING_BITS}.
19    # On unaffected versions, we turn off just Unicode warnings, via
20    # the proper API.
21    if(!defined($warnings::VERSION) || eval($warnings::VERSION) < 1.06) {
22	${^WARNING_BITS} = "";
23    } else {
24	"warnings"->unimport("utf8");
25    }
26}
27
28sub _fetch_sub { # fetch sub without autovivifying
29    my($pack, $sub) = @_;
30    $pack .= '::';
31    # only works with top-level packages
32    return unless exists($::{$pack});
33    for ($::{$pack}) {
34	return unless ref \$_ eq 'GLOB' && *$_{HASH} && exists $$_{$sub};
35	for ($$_{$sub}) {
36	    return ref \$_ eq 'GLOB' ? *$_{CODE} : undef
37	}
38    }
39}
40
41# UTF8_REGEXP_PROBLEM is a compile-time constant indicating whether Carp
42# must avoid applying a regular expression to an upgraded (is_utf8)
43# string.  There are multiple problems, on different Perl versions,
44# that require this to be avoided.  All versions prior to 5.13.8 will
45# load utf8_heavy.pl for the swash system, even if the regexp doesn't
46# use character classes.  Perl 5.6 and Perls [5.11.2, 5.13.11) exhibit
47# specific problems when Carp is being invoked in the aftermath of a
48# syntax error.
49BEGIN {
50    if("$]" < 5.013011) {
51	*UTF8_REGEXP_PROBLEM = sub () { 1 };
52    } else {
53	*UTF8_REGEXP_PROBLEM = sub () { 0 };
54    }
55}
56
57# is_utf8() is essentially the utf8::is_utf8() function, which indicates
58# whether a string is represented in the upgraded form (using UTF-8
59# internally).  As utf8::is_utf8() is only available from Perl 5.8
60# onwards, extra effort is required here to make it work on Perl 5.6.
61BEGIN {
62    if(defined(my $sub = _fetch_sub utf8 => 'is_utf8')) {
63	*is_utf8 = $sub;
64    } else {
65	# black magic for perl 5.6
66	*is_utf8 = sub { unpack("C", "\xaa".$_[0]) != 170 };
67    }
68}
69
70# The downgrade() function defined here is to be used for attempts to
71# downgrade where it is acceptable to fail.  It must be called with a
72# second argument that is a true value.
73BEGIN {
74    if(defined(my $sub = _fetch_sub utf8 => 'downgrade')) {
75	*downgrade = \&{"utf8::downgrade"};
76    } else {
77	*downgrade = sub {
78	    my $r = "";
79	    my $l = length($_[0]);
80	    for(my $i = 0; $i != $l; $i++) {
81		my $o = ord(substr($_[0], $i, 1));
82		return if $o > 255;
83		$r .= chr($o);
84	    }
85	    $_[0] = $r;
86	};
87    }
88}
89
90our $VERSION = '1.3301';
91
92our $MaxEvalLen = 0;
93our $Verbose    = 0;
94our $CarpLevel  = 0;
95our $MaxArgLen  = 64;    # How much of each argument to print. 0 = all.
96our $MaxArgNums = 8;     # How many arguments to print. 0 = all.
97our $RefArgFormatter = undef; # allow caller to format reference arguments
98
99require Exporter;
100our @ISA       = ('Exporter');
101our @EXPORT    = qw(confess croak carp);
102our @EXPORT_OK = qw(cluck verbose longmess shortmess);
103our @EXPORT_FAIL = qw(verbose);    # hook to enable verbose mode
104
105# The members of %Internal are packages that are internal to perl.
106# Carp will not report errors from within these packages if it
107# can.  The members of %CarpInternal are internal to Perl's warning
108# system.  Carp will not report errors from within these packages
109# either, and will not report calls *to* these packages for carp and
110# croak.  They replace $CarpLevel, which is deprecated.    The
111# $Max(EvalLen|(Arg(Len|Nums)) variables are used to specify how the eval
112# text and function arguments should be formatted when printed.
113
114our %CarpInternal;
115our %Internal;
116
117# disable these by default, so they can live w/o require Carp
118$CarpInternal{Carp}++;
119$CarpInternal{warnings}++;
120$Internal{Exporter}++;
121$Internal{'Exporter::Heavy'}++;
122
123# if the caller specifies verbose usage ("perl -MCarp=verbose script.pl")
124# then the following method will be called by the Exporter which knows
125# to do this thanks to @EXPORT_FAIL, above.  $_[1] will contain the word
126# 'verbose'.
127
128sub export_fail { shift; $Verbose = shift if $_[0] eq 'verbose'; @_ }
129
130sub _cgc {
131    no strict 'refs';
132    return \&{"CORE::GLOBAL::caller"} if defined &{"CORE::GLOBAL::caller"};
133    return;
134}
135
136sub longmess {
137    local($!, $^E);
138    # Icky backwards compatibility wrapper. :-(
139    #
140    # The story is that the original implementation hard-coded the
141    # number of call levels to go back, so calls to longmess were off
142    # by one.  Other code began calling longmess and expecting this
143    # behaviour, so the replacement has to emulate that behaviour.
144    my $cgc = _cgc();
145    my $call_pack = $cgc ? $cgc->() : caller();
146    if ( $Internal{$call_pack} or $CarpInternal{$call_pack} ) {
147        return longmess_heavy(@_);
148    }
149    else {
150        local $CarpLevel = $CarpLevel + 1;
151        return longmess_heavy(@_);
152    }
153}
154
155our @CARP_NOT;
156
157sub shortmess {
158    local($!, $^E);
159    my $cgc = _cgc();
160
161    # Icky backwards compatibility wrapper. :-(
162    local @CARP_NOT = $cgc ? $cgc->() : caller();
163    shortmess_heavy(@_);
164}
165
166sub croak   { die shortmess @_ }
167sub confess { die longmess @_ }
168sub carp    { warn shortmess @_ }
169sub cluck   { warn longmess @_ }
170
171BEGIN {
172    if("$]" >= 5.015002 || ("$]" >= 5.014002 && "$]" < 5.015) ||
173	    ("$]" >= 5.012005 && "$]" < 5.013)) {
174	*CALLER_OVERRIDE_CHECK_OK = sub () { 1 };
175    } else {
176	*CALLER_OVERRIDE_CHECK_OK = sub () { 0 };
177    }
178}
179
180sub caller_info {
181    my $i = shift(@_) + 1;
182    my %call_info;
183    my $cgc = _cgc();
184    {
185	# Some things override caller() but forget to implement the
186	# @DB::args part of it, which we need.  We check for this by
187	# pre-populating @DB::args with a sentinel which no-one else
188	# has the address of, so that we can detect whether @DB::args
189	# has been properly populated.  However, on earlier versions
190	# of perl this check tickles a bug in CORE::caller() which
191	# leaks memory.  So we only check on fixed perls.
192        @DB::args = \$i if CALLER_OVERRIDE_CHECK_OK;
193        package DB;
194        @call_info{
195            qw(pack file line sub has_args wantarray evaltext is_require) }
196            = $cgc ? $cgc->($i) : caller($i);
197    }
198
199    unless ( defined $call_info{file} ) {
200        return ();
201    }
202
203    my $sub_name = Carp::get_subname( \%call_info );
204    if ( $call_info{has_args} ) {
205        my @args;
206        if (CALLER_OVERRIDE_CHECK_OK && @DB::args == 1
207            && ref $DB::args[0] eq ref \$i
208            && $DB::args[0] == \$i ) {
209            @DB::args = ();    # Don't let anyone see the address of $i
210            local $@;
211            my $where = eval {
212                my $func    = $cgc or return '';
213                my $gv      =
214                    (_fetch_sub B => 'svref_2object' or return '')
215                        ->($func)->GV;
216                my $package = $gv->STASH->NAME;
217                my $subname = $gv->NAME;
218                return unless defined $package && defined $subname;
219
220                # returning CORE::GLOBAL::caller isn't useful for tracing the cause:
221                return if $package eq 'CORE::GLOBAL' && $subname eq 'caller';
222                " in &${package}::$subname";
223            } || '';
224            @args
225                = "** Incomplete caller override detected$where; \@DB::args were not set **";
226        }
227        else {
228            @args = @DB::args;
229            my $overflow;
230            if ( $MaxArgNums and @args > $MaxArgNums )
231            {    # More than we want to show?
232                $#args = $MaxArgNums;
233                $overflow = 1;
234            }
235
236            @args = map { Carp::format_arg($_) } @args;
237
238            if ($overflow) {
239                push @args, '...';
240            }
241        }
242
243        # Push the args onto the subroutine
244        $sub_name .= '(' . join( ', ', @args ) . ')';
245    }
246    $call_info{sub_name} = $sub_name;
247    return wantarray() ? %call_info : \%call_info;
248}
249
250# Transform an argument to a function into a string.
251our $in_recurse;
252sub format_arg {
253    my $arg = shift;
254
255    if ( ref($arg) ) {
256         # legitimate, let's not leak it.
257        if (!$in_recurse &&
258	    do {
259                local $@;
260	        local $in_recurse = 1;
261		local $SIG{__DIE__} = sub{};
262                eval {$arg->can('CARP_TRACE') }
263            })
264        {
265            return $arg->CARP_TRACE();
266        }
267        elsif (!$in_recurse &&
268	       defined($RefArgFormatter) &&
269	       do {
270                local $@;
271	        local $in_recurse = 1;
272		local $SIG{__DIE__} = sub{};
273                eval {$arg = $RefArgFormatter->($arg); 1}
274                })
275        {
276            return $arg;
277        }
278        else
279        {
280	    my $sub = _fetch_sub(overload => 'StrVal');
281	    return $sub ? &$sub($arg) : "$arg";
282        }
283    }
284    return "undef" if !defined($arg);
285    downgrade($arg, 1);
286    return $arg if !(UTF8_REGEXP_PROBLEM && is_utf8($arg)) &&
287	    $arg =~ /\A-?[0-9]+(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?\z/;
288    my $suffix = "";
289    if ( 2 < $MaxArgLen and $MaxArgLen < length($arg) ) {
290        substr ( $arg, $MaxArgLen - 3 ) = "";
291	$suffix = "...";
292    }
293    if(UTF8_REGEXP_PROBLEM && is_utf8($arg)) {
294	for(my $i = length($arg); $i--; ) {
295	    my $c = substr($arg, $i, 1);
296	    my $x = substr($arg, 0, 0);   # work around bug on Perl 5.8.{1,2}
297	    if($c eq "\"" || $c eq "\\" || $c eq "\$" || $c eq "\@") {
298		substr $arg, $i, 0, "\\";
299		next;
300	    }
301	    my $o = ord($c);
302	    substr $arg, $i, 1, sprintf("\\x{%x}", $o)
303		if $o < 0x20 || $o > 0x7f;
304	}
305    } else {
306	$arg =~ s/([\"\\\$\@])/\\$1/g;
307	$arg =~ s/([^ -~])/sprintf("\\x{%x}",ord($1))/eg;
308    }
309    downgrade($arg, 1);
310    return "\"".$arg."\"".$suffix;
311}
312
313sub Regexp::CARP_TRACE {
314    my $arg = "$_[0]";
315    downgrade($arg, 1);
316    if(UTF8_REGEXP_PROBLEM && is_utf8($arg)) {
317	for(my $i = length($arg); $i--; ) {
318	    my $o = ord(substr($arg, $i, 1));
319	    my $x = substr($arg, 0, 0);   # work around bug on Perl 5.8.{1,2}
320	    substr $arg, $i, 1, sprintf("\\x{%x}", $o)
321		if $o < 0x20 || $o > 0x7f;
322	}
323    } else {
324	$arg =~ s/([^ -~])/sprintf("\\x{%x}",ord($1))/eg;
325    }
326    downgrade($arg, 1);
327    my $suffix = "";
328    if($arg =~ /\A\(\?\^?([a-z]*)(?:-[a-z]*)?:(.*)\)\z/s) {
329	($suffix, $arg) = ($1, $2);
330    }
331    if ( 2 < $MaxArgLen and $MaxArgLen < length($arg) ) {
332        substr ( $arg, $MaxArgLen - 3 ) = "";
333	$suffix = "...".$suffix;
334    }
335    return "qr($arg)$suffix";
336}
337
338# Takes an inheritance cache and a package and returns
339# an anon hash of known inheritances and anon array of
340# inheritances which consequences have not been figured
341# for.
342sub get_status {
343    my $cache = shift;
344    my $pkg   = shift;
345    $cache->{$pkg} ||= [ { $pkg => $pkg }, [ trusts_directly($pkg) ] ];
346    return @{ $cache->{$pkg} };
347}
348
349# Takes the info from caller() and figures out the name of
350# the sub/require/eval
351sub get_subname {
352    my $info = shift;
353    if ( defined( $info->{evaltext} ) ) {
354        my $eval = $info->{evaltext};
355        if ( $info->{is_require} ) {
356            return "require $eval";
357        }
358        else {
359            $eval =~ s/([\\\'])/\\$1/g;
360            return "eval '" . str_len_trim( $eval, $MaxEvalLen ) . "'";
361        }
362    }
363
364    # this can happen on older perls when the sub (or the stash containing it)
365    # has been deleted
366    if ( !defined( $info->{sub} ) ) {
367        return '__ANON__::__ANON__';
368    }
369
370    return ( $info->{sub} eq '(eval)' ) ? 'eval {...}' : $info->{sub};
371}
372
373# Figures out what call (from the point of view of the caller)
374# the long error backtrace should start at.
375sub long_error_loc {
376    my $i;
377    my $lvl = $CarpLevel;
378    {
379        ++$i;
380        my $cgc = _cgc();
381        my @caller = $cgc ? $cgc->($i) : caller($i);
382        my $pkg = $caller[0];
383        unless ( defined($pkg) ) {
384
385            # This *shouldn't* happen.
386            if (%Internal) {
387                local %Internal;
388                $i = long_error_loc();
389                last;
390            }
391            elsif (defined $caller[2]) {
392                # this can happen when the stash has been deleted
393                # in that case, just assume that it's a reasonable place to
394                # stop (the file and line data will still be intact in any
395                # case) - the only issue is that we can't detect if the
396                # deleted package was internal (so don't do that then)
397                # -doy
398                redo unless 0 > --$lvl;
399                last;
400            }
401            else {
402                return 2;
403            }
404        }
405        redo if $CarpInternal{$pkg};
406        redo unless 0 > --$lvl;
407        redo if $Internal{$pkg};
408    }
409    return $i - 1;
410}
411
412sub longmess_heavy {
413    return @_ if ref( $_[0] );    # don't break references as exceptions
414    my $i = long_error_loc();
415    return ret_backtrace( $i, @_ );
416}
417
418# Returns a full stack backtrace starting from where it is
419# told.
420sub ret_backtrace {
421    my ( $i, @error ) = @_;
422    my $mess;
423    my $err = join '', @error;
424    $i++;
425
426    my $tid_msg = '';
427    if ( defined &threads::tid ) {
428        my $tid = threads->tid;
429        $tid_msg = " thread $tid" if $tid;
430    }
431
432    my %i = caller_info($i);
433    $mess = "$err at $i{file} line $i{line}$tid_msg";
434    if( defined $. ) {
435        local $@ = '';
436        local $SIG{__DIE__};
437        eval {
438            CORE::die;
439        };
440        if($@ =~ /^Died at .*(, <.*?> line \d+).$/ ) {
441            $mess .= $1;
442        }
443    }
444    $mess .= "\.\n";
445
446    while ( my %i = caller_info( ++$i ) ) {
447        $mess .= "\t$i{sub_name} called at $i{file} line $i{line}$tid_msg\n";
448    }
449
450    return $mess;
451}
452
453sub ret_summary {
454    my ( $i, @error ) = @_;
455    my $err = join '', @error;
456    $i++;
457
458    my $tid_msg = '';
459    if ( defined &threads::tid ) {
460        my $tid = threads->tid;
461        $tid_msg = " thread $tid" if $tid;
462    }
463
464    my %i = caller_info($i);
465    return "$err at $i{file} line $i{line}$tid_msg\.\n";
466}
467
468sub short_error_loc {
469    # You have to create your (hash)ref out here, rather than defaulting it
470    # inside trusts *on a lexical*, as you want it to persist across calls.
471    # (You can default it on $_[2], but that gets messy)
472    my $cache = {};
473    my $i     = 1;
474    my $lvl   = $CarpLevel;
475    {
476        my $cgc = _cgc();
477        my $called = $cgc ? $cgc->($i) : caller($i);
478        $i++;
479        my $caller = $cgc ? $cgc->($i) : caller($i);
480
481        if (!defined($caller)) {
482            my @caller = $cgc ? $cgc->($i) : caller($i);
483            if (@caller) {
484                # if there's no package but there is other caller info, then
485                # the package has been deleted - treat this as a valid package
486                # in this case
487                redo if defined($called) && $CarpInternal{$called};
488                redo unless 0 > --$lvl;
489                last;
490            }
491            else {
492                return 0;
493            }
494        }
495        redo if $Internal{$caller};
496        redo if $CarpInternal{$caller};
497        redo if $CarpInternal{$called};
498        redo if trusts( $called, $caller, $cache );
499        redo if trusts( $caller, $called, $cache );
500        redo unless 0 > --$lvl;
501    }
502    return $i - 1;
503}
504
505sub shortmess_heavy {
506    return longmess_heavy(@_) if $Verbose;
507    return @_ if ref( $_[0] );    # don't break references as exceptions
508    my $i = short_error_loc();
509    if ($i) {
510        ret_summary( $i, @_ );
511    }
512    else {
513        longmess_heavy(@_);
514    }
515}
516
517# If a string is too long, trims it with ...
518sub str_len_trim {
519    my $str = shift;
520    my $max = shift || 0;
521    if ( 2 < $max and $max < length($str) ) {
522        substr( $str, $max - 3 ) = '...';
523    }
524    return $str;
525}
526
527# Takes two packages and an optional cache.  Says whether the
528# first inherits from the second.
529#
530# Recursive versions of this have to work to avoid certain
531# possible endless loops, and when following long chains of
532# inheritance are less efficient.
533sub trusts {
534    my $child  = shift;
535    my $parent = shift;
536    my $cache  = shift;
537    my ( $known, $partial ) = get_status( $cache, $child );
538
539    # Figure out consequences until we have an answer
540    while ( @$partial and not exists $known->{$parent} ) {
541        my $anc = shift @$partial;
542        next if exists $known->{$anc};
543        $known->{$anc}++;
544        my ( $anc_knows, $anc_partial ) = get_status( $cache, $anc );
545        my @found = keys %$anc_knows;
546        @$known{@found} = ();
547        push @$partial, @$anc_partial;
548    }
549    return exists $known->{$parent};
550}
551
552# Takes a package and gives a list of those trusted directly
553sub trusts_directly {
554    my $class = shift;
555    no strict 'refs';
556    my $stash = \%{"$class\::"};
557    for my $var (qw/ CARP_NOT ISA /) {
558        # Don't try using the variable until we know it exists,
559        # to avoid polluting the caller's namespace.
560        if ( $stash->{$var} && *{$stash->{$var}}{ARRAY} && @{$stash->{$var}} ) {
561           return @{$stash->{$var}}
562        }
563    }
564    return;
565}
566
567if(!defined($warnings::VERSION) ||
568	do { no warnings "numeric"; $warnings::VERSION < 1.03 }) {
569    # Very old versions of warnings.pm import from Carp.  This can go
570    # wrong due to the circular dependency.  If Carp is invoked before
571    # warnings, then Carp starts by loading warnings, then warnings
572    # tries to import from Carp, and gets nothing because Carp is in
573    # the process of loading and hasn't defined its import method yet.
574    # So we work around that by manually exporting to warnings here.
575    no strict "refs";
576    *{"warnings::$_"} = \&$_ foreach @EXPORT;
577}
578
5791;
580
581__END__
582
583=head1 NAME
584
585Carp - alternative warn and die for modules
586
587=head1 SYNOPSIS
588
589    use Carp;
590
591    # warn user (from perspective of caller)
592    carp "string trimmed to 80 chars";
593
594    # die of errors (from perspective of caller)
595    croak "We're outta here!";
596
597    # die of errors with stack backtrace
598    confess "not implemented";
599
600    # cluck, longmess and shortmess not exported by default
601    use Carp qw(cluck longmess shortmess);
602    cluck "This is how we got here!";
603    $long_message   = longmess( "message from cluck() or confess()" );
604    $short_message  = shortmess( "message from carp() or croak()" );
605
606=head1 DESCRIPTION
607
608The Carp routines are useful in your own modules because
609they act like C<die()> or C<warn()>, but with a message which is more
610likely to be useful to a user of your module.  In the case of
611C<cluck()> and C<confess()>, that context is a summary of every
612call in the call-stack; C<longmess()> returns the contents of the error
613message.
614
615For a shorter message you can use C<carp()> or C<croak()> which report the
616error as being from where your module was called.  C<shortmess()> returns the
617contents of this error message.  There is no guarantee that that is where the
618error was, but it is a good educated guess.
619
620C<Carp> takes care not to clobber the status variables C<$!> and C<$^E>
621in the course of assembling its error messages.  This means that a
622C<$SIG{__DIE__}> or C<$SIG{__WARN__}> handler can capture the error
623information held in those variables, if it is required to augment the
624error message, and if the code calling C<Carp> left useful values there.
625Of course, C<Carp> can't guarantee the latter.
626
627You can also alter the way the output and logic of C<Carp> works, by
628changing some global variables in the C<Carp> namespace. See the
629section on C<GLOBAL VARIABLES> below.
630
631Here is a more complete description of how C<carp> and C<croak> work.
632What they do is search the call-stack for a function call stack where
633they have not been told that there shouldn't be an error.  If every
634call is marked safe, they give up and give a full stack backtrace
635instead.  In other words they presume that the first likely looking
636potential suspect is guilty.  Their rules for telling whether
637a call shouldn't generate errors work as follows:
638
639=over 4
640
641=item 1.
642
643Any call from a package to itself is safe.
644
645=item 2.
646
647Packages claim that there won't be errors on calls to or from
648packages explicitly marked as safe by inclusion in C<@CARP_NOT>, or
649(if that array is empty) C<@ISA>.  The ability to override what
650@ISA says is new in 5.8.
651
652=item 3.
653
654The trust in item 2 is transitive.  If A trusts B, and B
655trusts C, then A trusts C.  So if you do not override C<@ISA>
656with C<@CARP_NOT>, then this trust relationship is identical to,
657"inherits from".
658
659=item 4.
660
661Any call from an internal Perl module is safe.  (Nothing keeps
662user modules from marking themselves as internal to Perl, but
663this practice is discouraged.)
664
665=item 5.
666
667Any call to Perl's warning system (eg Carp itself) is safe.
668(This rule is what keeps it from reporting the error at the
669point where you call C<carp> or C<croak>.)
670
671=item 6.
672
673C<$Carp::CarpLevel> can be set to skip a fixed number of additional
674call levels.  Using this is not recommended because it is very
675difficult to get it to behave correctly.
676
677=back
678
679=head2 Forcing a Stack Trace
680
681As a debugging aid, you can force Carp to treat a croak as a confess
682and a carp as a cluck across I<all> modules. In other words, force a
683detailed stack trace to be given.  This can be very helpful when trying
684to understand why, or from where, a warning or error is being generated.
685
686This feature is enabled by 'importing' the non-existent symbol
687'verbose'. You would typically enable it by saying
688
689    perl -MCarp=verbose script.pl
690
691or by including the string C<-MCarp=verbose> in the PERL5OPT
692environment variable.
693
694Alternately, you can set the global variable C<$Carp::Verbose> to true.
695See the C<GLOBAL VARIABLES> section below.
696
697=head2 Stack Trace formatting
698
699At each stack level, the subroutine's name is displayed along with
700its parameters.  For simple scalars, this is sufficient.  For complex
701data types, such as objects and other references, this can simply
702display C<'HASH(0x1ab36d8)'>.
703
704Carp gives two ways to control this.
705
706=over 4
707
708=item 1.
709
710For objects, a method, C<CARP_TRACE>, will be called, if it exists.  If
711this method doesn't exist, or it recurses into C<Carp>, or it otherwise
712throws an exception, this is skipped, and Carp moves on to the next option,
713otherwise checking stops and the string returned is used.  It is recommended
714that the object's type is part of the string to make debugging easier.
715
716=item 2.
717
718For any type of reference, C<$Carp::RefArgFormatter> is checked (see below).
719This variable is expected to be a code reference, and the current parameter
720is passed in.  If this function doesn't exist (the variable is undef), or
721it recurses into C<Carp>, or it otherwise throws an exception, this is
722skipped, and Carp moves on to the next option, otherwise checking stops
723and the string returned is used.
724
725=item 3.
726
727Otherwise, if neither C<CARP_TRACE> nor C<$Carp::RefArgFormatter> is
728available, stringify the value ignoring any overloading.
729
730=back
731
732=head1 GLOBAL VARIABLES
733
734=head2 $Carp::MaxEvalLen
735
736This variable determines how many characters of a string-eval are to
737be shown in the output. Use a value of C<0> to show all text.
738
739Defaults to C<0>.
740
741=head2 $Carp::MaxArgLen
742
743This variable determines how many characters of each argument to a
744function to print. Use a value of C<0> to show the full length of the
745argument.
746
747Defaults to C<64>.
748
749=head2 $Carp::MaxArgNums
750
751This variable determines how many arguments to each function to show.
752Use a value of C<0> to show all arguments to a function call.
753
754Defaults to C<8>.
755
756=head2 $Carp::Verbose
757
758This variable makes C<carp()> and C<croak()> generate stack backtraces
759just like C<cluck()> and C<confess()>.  This is how C<use Carp 'verbose'>
760is implemented internally.
761
762Defaults to C<0>.
763
764=head2 $Carp::RefArgFormatter
765
766This variable sets a general argument formatter to display references.
767Plain scalars and objects that implement C<CARP_TRACE> will not go through
768this formatter.  Calling C<Carp> from within this function is not supported.
769
770local $Carp::RefArgFormatter = sub {
771    require Data::Dumper;
772    Data::Dumper::Dump($_[0]); # not necessarily safe
773};
774
775=head2 @CARP_NOT
776
777This variable, I<in your package>, says which packages are I<not> to be
778considered as the location of an error. The C<carp()> and C<cluck()>
779functions will skip over callers when reporting where an error occurred.
780
781NB: This variable must be in the package's symbol table, thus:
782
783    # These work
784    our @CARP_NOT; # file scope
785    use vars qw(@CARP_NOT); # package scope
786    @My::Package::CARP_NOT = ... ; # explicit package variable
787
788    # These don't work
789    sub xyz { ... @CARP_NOT = ... } # w/o declarations above
790    my @CARP_NOT; # even at top-level
791
792Example of use:
793
794    package My::Carping::Package;
795    use Carp;
796    our @CARP_NOT;
797    sub bar     { .... or _error('Wrong input') }
798    sub _error  {
799        # temporary control of where'ness, __PACKAGE__ is implicit
800        local @CARP_NOT = qw(My::Friendly::Caller);
801        carp(@_)
802    }
803
804This would make C<Carp> report the error as coming from a caller not
805in C<My::Carping::Package>, nor from C<My::Friendly::Caller>.
806
807Also read the L</DESCRIPTION> section above, about how C<Carp> decides
808where the error is reported from.
809
810Use C<@CARP_NOT>, instead of C<$Carp::CarpLevel>.
811
812Overrides C<Carp>'s use of C<@ISA>.
813
814=head2 %Carp::Internal
815
816This says what packages are internal to Perl.  C<Carp> will never
817report an error as being from a line in a package that is internal to
818Perl.  For example:
819
820    $Carp::Internal{ (__PACKAGE__) }++;
821    # time passes...
822    sub foo { ... or confess("whatever") };
823
824would give a full stack backtrace starting from the first caller
825outside of __PACKAGE__.  (Unless that package was also internal to
826Perl.)
827
828=head2 %Carp::CarpInternal
829
830This says which packages are internal to Perl's warning system.  For
831generating a full stack backtrace this is the same as being internal
832to Perl, the stack backtrace will not start inside packages that are
833listed in C<%Carp::CarpInternal>.  But it is slightly different for
834the summary message generated by C<carp> or C<croak>.  There errors
835will not be reported on any lines that are calling packages in
836C<%Carp::CarpInternal>.
837
838For example C<Carp> itself is listed in C<%Carp::CarpInternal>.
839Therefore the full stack backtrace from C<confess> will not start
840inside of C<Carp>, and the short message from calling C<croak> is
841not placed on the line where C<croak> was called.
842
843=head2 $Carp::CarpLevel
844
845This variable determines how many additional call frames are to be
846skipped that would not otherwise be when reporting where an error
847occurred on a call to one of C<Carp>'s functions.  It is fairly easy
848to count these call frames on calls that generate a full stack
849backtrace.  However it is much harder to do this accounting for calls
850that generate a short message.  Usually people skip too many call
851frames.  If they are lucky they skip enough that C<Carp> goes all of
852the way through the call stack, realizes that something is wrong, and
853then generates a full stack backtrace.  If they are unlucky then the
854error is reported from somewhere misleading very high in the call
855stack.
856
857Therefore it is best to avoid C<$Carp::CarpLevel>.  Instead use
858C<@CARP_NOT>, C<%Carp::Internal> and C<%Carp::CarpInternal>.
859
860Defaults to C<0>.
861
862=head1 BUGS
863
864The Carp routines don't handle exception objects currently.
865If called with a first argument that is a reference, they simply
866call die() or warn(), as appropriate.
867
868Some of the Carp code assumes that Perl's basic character encoding is
869ASCII, and will go wrong on an EBCDIC platform.
870
871=head1 SEE ALSO
872
873L<Carp::Always>,
874L<Carp::Clan>
875
876=head1 AUTHOR
877
878The Carp module first appeared in Larry Wall's perl 5.000 distribution.
879Since then it has been modified by several of the perl 5 porters.
880Andrew Main (Zefram) <zefram@fysh.org> divested Carp into an independent
881distribution.
882
883=head1 COPYRIGHT
884
885Copyright (C) 1994-2013 Larry Wall
886
887Copyright (C) 2011, 2012, 2013 Andrew Main (Zefram) <zefram@fysh.org>
888
889=head1 LICENSE
890
891This module is free software; you can redistribute it and/or modify it
892under the same terms as Perl itself.
893