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 90# is_safe_printable_codepoint() indicates whether a character, specified 91# by integer codepoint, is OK to output literally in a trace. Generally 92# this is if it is a printable character in the ancestral character set 93# (ASCII or EBCDIC). This is used on some Perls in situations where a 94# regexp can't be used. 95BEGIN { 96 *is_safe_printable_codepoint = 97 "$]" >= 5.007_003 ? 98 eval(q(sub ($) { 99 my $u = utf8::native_to_unicode($_[0]); 100 $u >= 0x20 && $u <= 0x7e; 101 })) 102 : ord("A") == 65 ? 103 sub ($) { $_[0] >= 0x20 && $_[0] <= 0x7e } 104 : 105 sub ($) { 106 # Early EBCDIC 107 # 3 EBCDIC code pages supported then; all controls but one 108 # are the code points below SPACE. The other one is 0x5F on 109 # POSIX-BC; FF on the other two. 110 # FIXME: there are plenty of unprintable codepoints other 111 # than those that this code and the comment above identifies 112 # as "controls". 113 $_[0] >= ord(" ") && $_[0] <= 0xff && 114 $_[0] != (ord ("^") == 106 ? 0x5f : 0xff); 115 } 116 ; 117} 118 119sub _univ_mod_loaded { 120 return 0 unless exists($::{"UNIVERSAL::"}); 121 for ($::{"UNIVERSAL::"}) { 122 return 0 unless ref \$_ eq "GLOB" && *$_{HASH} && exists $$_{"$_[0]::"}; 123 for ($$_{"$_[0]::"}) { 124 return 0 unless ref \$_ eq "GLOB" && *$_{HASH} && exists $$_{"VERSION"}; 125 for ($$_{"VERSION"}) { 126 return 0 unless ref \$_ eq "GLOB"; 127 return ${*$_{SCALAR}}; 128 } 129 } 130 } 131} 132 133# _maybe_isa() is usually the UNIVERSAL::isa function. We have to avoid 134# the latter if the UNIVERSAL::isa module has been loaded, to avoid infi- 135# nite recursion; in that case _maybe_isa simply returns true. 136my $isa; 137BEGIN { 138 if (_univ_mod_loaded('isa')) { 139 *_maybe_isa = sub { 1 } 140 } 141 else { 142 # Since we have already done the check, record $isa for use below 143 # when defining _StrVal. 144 *_maybe_isa = $isa = _fetch_sub(UNIVERSAL => "isa"); 145 } 146} 147 148 149# We need an overload::StrVal or equivalent function, but we must avoid 150# loading any modules on demand, as Carp is used from __DIE__ handlers and 151# may be invoked after a syntax error. 152# We can copy recent implementations of overload::StrVal and use 153# overloading.pm, which is the fastest implementation, so long as 154# overloading is available. If it is not available, we use our own pure- 155# Perl StrVal. We never actually use overload::StrVal, for various rea- 156# sons described below. 157# overload versions are as follows: 158# undef-1.00 (up to perl 5.8.0) uses bless (avoid!) 159# 1.01-1.17 (perl 5.8.1 to 5.14) uses Scalar::Util 160# 1.18+ (perl 5.16+) uses overloading 161# The ancient 'bless' implementation (that inspires our pure-Perl version) 162# blesses unblessed references and must be avoided. Those using 163# Scalar::Util use refaddr, possibly the pure-Perl implementation, which 164# has the same blessing bug, and must be avoided. Also, Scalar::Util is 165# loaded on demand. Since we avoid the Scalar::Util implementations, we 166# end up having to implement our own overloading.pm-based version for perl 167# 5.10.1 to 5.14. Since it also works just as well in more recent ver- 168# sions, we use it there, too. 169BEGIN { 170 if (eval { require "overloading.pm" }) { 171 *_StrVal = eval 'sub { no overloading; "$_[0]" }' 172 } 173 else { 174 # Work around the UNIVERSAL::can/isa modules to avoid recursion. 175 176 # _mycan is either UNIVERSAL::can, or, in the presence of an 177 # override, overload::mycan. 178 *_mycan = _univ_mod_loaded('can') 179 ? do { require "overload.pm"; _fetch_sub overload => 'mycan' } 180 : \&UNIVERSAL::can; 181 182 # _blessed is either UNIVERSAL::isa(...), or, in the presence of an 183 # override, a hideous, but fairly reliable, workaround. 184 *_blessed = $isa 185 ? sub { &$isa($_[0], "UNIVERSAL") } 186 : sub { 187 my $probe = "UNIVERSAL::Carp_probe_" . rand; 188 no strict 'refs'; 189 local *$probe = sub { "unlikely string" }; 190 local $@; 191 local $SIG{__DIE__} = sub{}; 192 (eval { $_[0]->$probe } || '') eq 'unlikely string' 193 }; 194 195 *_StrVal = sub { 196 my $pack = ref $_[0]; 197 # Perl's overload mechanism uses the presence of a special 198 # "method" named "((" or "()" to signal it is in effect. 199 # This test seeks to see if it has been set up. "((" post- 200 # dates overloading.pm, so we can skip it. 201 return "$_[0]" unless _mycan($pack, "()"); 202 # Even at this point, the invocant may not be blessed, so 203 # check for that. 204 return "$_[0]" if not _blessed($_[0]); 205 bless $_[0], "Carp"; 206 my $str = "$_[0]"; 207 bless $_[0], $pack; 208 $pack . substr $str, index $str, "="; 209 } 210 } 211} 212 213 214our $VERSION = '1.54'; 215$VERSION =~ tr/_//d; 216 217our $MaxEvalLen = 0; 218our $Verbose = 0; 219our $CarpLevel = 0; 220our $MaxArgLen = 64; # How much of each argument to print. 0 = all. 221our $MaxArgNums = 8; # How many arguments to print. 0 = all. 222our $RefArgFormatter = undef; # allow caller to format reference arguments 223 224require Exporter; 225our @ISA = ('Exporter'); 226our @EXPORT = qw(confess croak carp); 227our @EXPORT_OK = qw(cluck verbose longmess shortmess); 228our @EXPORT_FAIL = qw(verbose); # hook to enable verbose mode 229 230# The members of %Internal are packages that are internal to perl. 231# Carp will not report errors from within these packages if it 232# can. The members of %CarpInternal are internal to Perl's warning 233# system. Carp will not report errors from within these packages 234# either, and will not report calls *to* these packages for carp and 235# croak. They replace $CarpLevel, which is deprecated. The 236# $Max(EvalLen|(Arg(Len|Nums)) variables are used to specify how the eval 237# text and function arguments should be formatted when printed. 238 239our %CarpInternal; 240our %Internal; 241 242# disable these by default, so they can live w/o require Carp 243$CarpInternal{Carp}++; 244$CarpInternal{warnings}++; 245$Internal{Exporter}++; 246$Internal{'Exporter::Heavy'}++; 247 248# if the caller specifies verbose usage ("perl -MCarp=verbose script.pl") 249# then the following method will be called by the Exporter which knows 250# to do this thanks to @EXPORT_FAIL, above. $_[1] will contain the word 251# 'verbose'. 252 253sub export_fail { shift; $Verbose = shift if $_[0] eq 'verbose'; @_ } 254 255sub _cgc { 256 no strict 'refs'; 257 return \&{"CORE::GLOBAL::caller"} if defined &{"CORE::GLOBAL::caller"}; 258 return; 259} 260 261sub longmess { 262 local($!, $^E); 263 # Icky backwards compatibility wrapper. :-( 264 # 265 # The story is that the original implementation hard-coded the 266 # number of call levels to go back, so calls to longmess were off 267 # by one. Other code began calling longmess and expecting this 268 # behaviour, so the replacement has to emulate that behaviour. 269 my $cgc = _cgc(); 270 my $call_pack = $cgc ? $cgc->() : caller(); 271 if ( $Internal{$call_pack} or $CarpInternal{$call_pack} ) { 272 return longmess_heavy(@_); 273 } 274 else { 275 local $CarpLevel = $CarpLevel + 1; 276 return longmess_heavy(@_); 277 } 278} 279 280our @CARP_NOT; 281 282sub shortmess { 283 local($!, $^E); 284 my $cgc = _cgc(); 285 286 # Icky backwards compatibility wrapper. :-( 287 local @CARP_NOT = scalar( $cgc ? $cgc->() : caller() ); 288 shortmess_heavy(@_); 289} 290 291sub croak { die shortmess @_ } 292sub confess { die longmess @_ } 293sub carp { warn shortmess @_ } 294sub cluck { warn longmess @_ } 295 296BEGIN { 297 if("$]" >= 5.015002 || ("$]" >= 5.014002 && "$]" < 5.015) || 298 ("$]" >= 5.012005 && "$]" < 5.013)) { 299 *CALLER_OVERRIDE_CHECK_OK = sub () { 1 }; 300 } else { 301 *CALLER_OVERRIDE_CHECK_OK = sub () { 0 }; 302 } 303} 304 305sub caller_info { 306 my $i = shift(@_) + 1; 307 my %call_info; 308 my $cgc = _cgc(); 309 { 310 # Some things override caller() but forget to implement the 311 # @DB::args part of it, which we need. We check for this by 312 # pre-populating @DB::args with a sentinel which no-one else 313 # has the address of, so that we can detect whether @DB::args 314 # has been properly populated. However, on earlier versions 315 # of perl this check tickles a bug in CORE::caller() which 316 # leaks memory. So we only check on fixed perls. 317 @DB::args = \$i if CALLER_OVERRIDE_CHECK_OK; 318 package DB; 319 @call_info{ 320 qw(pack file line sub has_args wantarray evaltext is_require) } 321 = $cgc ? $cgc->($i) : caller($i); 322 } 323 324 unless ( defined $call_info{file} ) { 325 return (); 326 } 327 328 my $sub_name = Carp::get_subname( \%call_info ); 329 if ( $call_info{has_args} ) { 330 # Guard our serialization of the stack from stack refcounting bugs 331 # NOTE this is NOT a complete solution, we cannot 100% guard against 332 # these bugs. However in many cases Perl *is* capable of detecting 333 # them and throws an error when it does. Unfortunately serializing 334 # the arguments on the stack is a perfect way of finding these bugs, 335 # even when they would not affect normal program flow that did not 336 # poke around inside the stack. Inside of Carp.pm it makes little 337 # sense reporting these bugs, as Carp's job is to report the callers 338 # errors, not the ones it might happen to tickle while doing so. 339 # See: https://rt.perl.org/Public/Bug/Display.html?id=131046 340 # and: https://rt.perl.org/Public/Bug/Display.html?id=52610 341 # for more details and discussion. - Yves 342 my @args = map { 343 my $arg; 344 local $@= $@; 345 eval { 346 $arg = $_; 347 1; 348 } or do { 349 $arg = '** argument not available anymore **'; 350 }; 351 $arg; 352 } @DB::args; 353 if (CALLER_OVERRIDE_CHECK_OK && @args == 1 354 && ref $args[0] eq ref \$i 355 && $args[0] == \$i ) { 356 @args = (); # Don't let anyone see the address of $i 357 local $@; 358 my $where = eval { 359 my $func = $cgc or return ''; 360 my $gv = 361 (_fetch_sub B => 'svref_2object' or return '') 362 ->($func)->GV; 363 my $package = $gv->STASH->NAME; 364 my $subname = $gv->NAME; 365 return unless defined $package && defined $subname; 366 367 # returning CORE::GLOBAL::caller isn't useful for tracing the cause: 368 return if $package eq 'CORE::GLOBAL' && $subname eq 'caller'; 369 " in &${package}::$subname"; 370 } || ''; 371 @args 372 = "** Incomplete caller override detected$where; \@DB::args were not set **"; 373 } 374 else { 375 my $overflow; 376 if ( $MaxArgNums and @args > $MaxArgNums ) 377 { # More than we want to show? 378 $#args = $MaxArgNums - 1; 379 $overflow = 1; 380 } 381 382 @args = map { Carp::format_arg($_) } @args; 383 384 if ($overflow) { 385 push @args, '...'; 386 } 387 } 388 389 # Push the args onto the subroutine 390 $sub_name .= '(' . join( ', ', @args ) . ')'; 391 } 392 $call_info{sub_name} = $sub_name; 393 return wantarray() ? %call_info : \%call_info; 394} 395 396# Transform an argument to a function into a string. 397our $in_recurse; 398sub format_arg { 399 my $arg = shift; 400 401 if ( my $pack= ref($arg) ) { 402 403 # legitimate, let's not leak it. 404 if (!$in_recurse && _maybe_isa( $arg, 'UNIVERSAL' ) && 405 do { 406 local $@; 407 local $in_recurse = 1; 408 local $SIG{__DIE__} = sub{}; 409 eval {$arg->can('CARP_TRACE') } 410 }) 411 { 412 return $arg->CARP_TRACE(); 413 } 414 elsif (!$in_recurse && 415 defined($RefArgFormatter) && 416 do { 417 local $@; 418 local $in_recurse = 1; 419 local $SIG{__DIE__} = sub{}; 420 eval {$arg = $RefArgFormatter->($arg); 1} 421 }) 422 { 423 return $arg; 424 } 425 else 426 { 427 # Argument may be blessed into a class with overloading, and so 428 # might have an overloaded stringification. We don't want to 429 # risk getting the overloaded stringification, so we need to 430 # use _StrVal, our overload::StrVal()-equivalent. 431 return _StrVal $arg; 432 } 433 } 434 return "undef" if !defined($arg); 435 downgrade($arg, 1); 436 return $arg if !(UTF8_REGEXP_PROBLEM && is_utf8($arg)) && 437 $arg =~ /\A-?[0-9]+(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?\z/; 438 my $suffix = ""; 439 if ( 2 < $MaxArgLen and $MaxArgLen < length($arg) ) { 440 substr ( $arg, $MaxArgLen - 3 ) = ""; 441 $suffix = "..."; 442 } 443 if(UTF8_REGEXP_PROBLEM && is_utf8($arg)) { 444 for(my $i = length($arg); $i--; ) { 445 my $c = substr($arg, $i, 1); 446 my $x = substr($arg, 0, 0); # work around bug on Perl 5.8.{1,2} 447 if($c eq "\"" || $c eq "\\" || $c eq "\$" || $c eq "\@") { 448 substr $arg, $i, 0, "\\"; 449 next; 450 } 451 my $o = ord($c); 452 substr $arg, $i, 1, sprintf("\\x{%x}", $o) 453 unless is_safe_printable_codepoint($o); 454 } 455 } else { 456 $arg =~ s/([\"\\\$\@])/\\$1/g; 457 # This is all the ASCII printables spelled-out. It is portable to all 458 # Perl versions and platforms (such as EBCDIC). There are other more 459 # compact ways to do this, but may not work everywhere every version. 460 $arg =~ s/([^ !"#\$\%\&'()*+,\-.\/0123456789:;<=>?\@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]^_`abcdefghijklmnopqrstuvwxyz\{|}~])/sprintf("\\x{%x}",ord($1))/eg; 461 } 462 downgrade($arg, 1); 463 return "\"".$arg."\"".$suffix; 464} 465 466sub Regexp::CARP_TRACE { 467 my $arg = "$_[0]"; 468 downgrade($arg, 1); 469 if(UTF8_REGEXP_PROBLEM && is_utf8($arg)) { 470 for(my $i = length($arg); $i--; ) { 471 my $o = ord(substr($arg, $i, 1)); 472 my $x = substr($arg, 0, 0); # work around bug on Perl 5.8.{1,2} 473 substr $arg, $i, 1, sprintf("\\x{%x}", $o) 474 unless is_safe_printable_codepoint($o); 475 } 476 } else { 477 # See comment in format_arg() about this same regex. 478 $arg =~ s/([^ !"#\$\%\&'()*+,\-.\/0123456789:;<=>?\@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]^_`abcdefghijklmnopqrstuvwxyz\{|}~])/sprintf("\\x{%x}",ord($1))/eg; 479 } 480 downgrade($arg, 1); 481 my $suffix = ""; 482 if($arg =~ /\A\(\?\^?([a-z]*)(?:-[a-z]*)?:(.*)\)\z/s) { 483 ($suffix, $arg) = ($1, $2); 484 } 485 if ( 2 < $MaxArgLen and $MaxArgLen < length($arg) ) { 486 substr ( $arg, $MaxArgLen - 3 ) = ""; 487 $suffix = "...".$suffix; 488 } 489 return "qr($arg)$suffix"; 490} 491 492# Takes an inheritance cache and a package and returns 493# an anon hash of known inheritances and anon array of 494# inheritances which consequences have not been figured 495# for. 496sub get_status { 497 my $cache = shift; 498 my $pkg = shift; 499 $cache->{$pkg} ||= [ { $pkg => $pkg }, [ trusts_directly($pkg) ] ]; 500 return @{ $cache->{$pkg} }; 501} 502 503# Takes the info from caller() and figures out the name of 504# the sub/require/eval 505sub get_subname { 506 my $info = shift; 507 if ( defined( $info->{evaltext} ) ) { 508 my $eval = $info->{evaltext}; 509 if ( $info->{is_require} ) { 510 return "require $eval"; 511 } 512 else { 513 $eval =~ s/([\\\'])/\\$1/g; 514 return "eval '" . str_len_trim( $eval, $MaxEvalLen ) . "'"; 515 } 516 } 517 518 # this can happen on older perls when the sub (or the stash containing it) 519 # has been deleted 520 if ( !defined( $info->{sub} ) ) { 521 return '__ANON__::__ANON__'; 522 } 523 524 return ( $info->{sub} eq '(eval)' ) ? 'eval {...}' : $info->{sub}; 525} 526 527# Figures out what call (from the point of view of the caller) 528# the long error backtrace should start at. 529sub long_error_loc { 530 my $i; 531 my $lvl = $CarpLevel; 532 { 533 ++$i; 534 my $cgc = _cgc(); 535 my @caller = $cgc ? $cgc->($i) : caller($i); 536 my $pkg = $caller[0]; 537 unless ( defined($pkg) ) { 538 539 # This *shouldn't* happen. 540 if (%Internal) { 541 local %Internal; 542 $i = long_error_loc(); 543 last; 544 } 545 elsif (defined $caller[2]) { 546 # this can happen when the stash has been deleted 547 # in that case, just assume that it's a reasonable place to 548 # stop (the file and line data will still be intact in any 549 # case) - the only issue is that we can't detect if the 550 # deleted package was internal (so don't do that then) 551 # -doy 552 redo unless 0 > --$lvl; 553 last; 554 } 555 else { 556 return 2; 557 } 558 } 559 redo if $CarpInternal{$pkg}; 560 redo unless 0 > --$lvl; 561 redo if $Internal{$pkg}; 562 } 563 return $i - 1; 564} 565 566sub longmess_heavy { 567 if ( ref( $_[0] ) ) { # don't break references as exceptions 568 return wantarray ? @_ : $_[0]; 569 } 570 my $i = long_error_loc(); 571 return ret_backtrace( $i, @_ ); 572} 573 574BEGIN { 575 if("$]" >= 5.017004) { 576 # The LAST_FH constant is a reference to the variable. 577 $Carp::{LAST_FH} = \eval '\${^LAST_FH}'; 578 } else { 579 eval '*LAST_FH = sub () { 0 }'; 580 } 581} 582 583# Returns a full stack backtrace starting from where it is 584# told. 585sub ret_backtrace { 586 my ( $i, @error ) = @_; 587 my $mess; 588 my $err = join '', @error; 589 $i++; 590 591 my $tid_msg = ''; 592 if ( defined &threads::tid ) { 593 my $tid = threads->tid; 594 $tid_msg = " thread $tid" if $tid; 595 } 596 597 my %i = caller_info($i); 598 $mess = "$err at $i{file} line $i{line}$tid_msg"; 599 if( $. ) { 600 # Use ${^LAST_FH} if available. 601 if (LAST_FH) { 602 if (${+LAST_FH}) { 603 $mess .= sprintf ", <%s> %s %d", 604 *${+LAST_FH}{NAME}, 605 ($/ eq "\n" ? "line" : "chunk"), $. 606 } 607 } 608 else { 609 local $@ = ''; 610 local $SIG{__DIE__}; 611 eval { 612 CORE::die; 613 }; 614 if($@ =~ /^Died at .*(, <.*?> (?:line|chunk) \d+).$/ ) { 615 $mess .= $1; 616 } 617 } 618 } 619 $mess .= "\.\n"; 620 621 while ( my %i = caller_info( ++$i ) ) { 622 $mess .= "\t$i{sub_name} called at $i{file} line $i{line}$tid_msg\n"; 623 } 624 625 return $mess; 626} 627 628sub ret_summary { 629 my ( $i, @error ) = @_; 630 my $err = join '', @error; 631 $i++; 632 633 my $tid_msg = ''; 634 if ( defined &threads::tid ) { 635 my $tid = threads->tid; 636 $tid_msg = " thread $tid" if $tid; 637 } 638 639 my %i = caller_info($i); 640 return "$err at $i{file} line $i{line}$tid_msg\.\n"; 641} 642 643sub short_error_loc { 644 # You have to create your (hash)ref out here, rather than defaulting it 645 # inside trusts *on a lexical*, as you want it to persist across calls. 646 # (You can default it on $_[2], but that gets messy) 647 my $cache = {}; 648 my $i = 1; 649 my $lvl = $CarpLevel; 650 { 651 my $cgc = _cgc(); 652 my $called = $cgc ? $cgc->($i) : caller($i); 653 $i++; 654 my $caller = $cgc ? $cgc->($i) : caller($i); 655 656 if (!defined($caller)) { 657 my @caller = $cgc ? $cgc->($i) : caller($i); 658 if (@caller) { 659 # if there's no package but there is other caller info, then 660 # the package has been deleted - treat this as a valid package 661 # in this case 662 redo if defined($called) && $CarpInternal{$called}; 663 redo unless 0 > --$lvl; 664 last; 665 } 666 else { 667 return 0; 668 } 669 } 670 redo if $Internal{$caller}; 671 redo if $CarpInternal{$caller}; 672 redo if $CarpInternal{$called}; 673 redo if trusts( $called, $caller, $cache ); 674 redo if trusts( $caller, $called, $cache ); 675 redo unless 0 > --$lvl; 676 } 677 return $i - 1; 678} 679 680sub shortmess_heavy { 681 return longmess_heavy(@_) if $Verbose; 682 return @_ if ref( $_[0] ); # don't break references as exceptions 683 my $i = short_error_loc(); 684 if ($i) { 685 ret_summary( $i, @_ ); 686 } 687 else { 688 longmess_heavy(@_); 689 } 690} 691 692# If a string is too long, trims it with ... 693sub str_len_trim { 694 my $str = shift; 695 my $max = shift || 0; 696 if ( 2 < $max and $max < length($str) ) { 697 substr( $str, $max - 3 ) = '...'; 698 } 699 return $str; 700} 701 702# Takes two packages and an optional cache. Says whether the 703# first inherits from the second. 704# 705# Recursive versions of this have to work to avoid certain 706# possible endless loops, and when following long chains of 707# inheritance are less efficient. 708sub trusts { 709 my $child = shift; 710 my $parent = shift; 711 my $cache = shift; 712 my ( $known, $partial ) = get_status( $cache, $child ); 713 714 # Figure out consequences until we have an answer 715 while ( @$partial and not exists $known->{$parent} ) { 716 my $anc = shift @$partial; 717 next if exists $known->{$anc}; 718 $known->{$anc}++; 719 my ( $anc_knows, $anc_partial ) = get_status( $cache, $anc ); 720 my @found = keys %$anc_knows; 721 @$known{@found} = (); 722 push @$partial, @$anc_partial; 723 } 724 return exists $known->{$parent}; 725} 726 727# Takes a package and gives a list of those trusted directly 728sub trusts_directly { 729 my $class = shift; 730 no strict 'refs'; 731 my $stash = \%{"$class\::"}; 732 for my $var (qw/ CARP_NOT ISA /) { 733 # Don't try using the variable until we know it exists, 734 # to avoid polluting the caller's namespace. 735 if ( $stash->{$var} && ref \$stash->{$var} eq 'GLOB' 736 && *{$stash->{$var}}{ARRAY} && @{$stash->{$var}} ) { 737 return @{$stash->{$var}} 738 } 739 } 740 return; 741} 742 743if(!defined($warnings::VERSION) || 744 do { no warnings "numeric"; $warnings::VERSION < 1.03 }) { 745 # Very old versions of warnings.pm import from Carp. This can go 746 # wrong due to the circular dependency. If Carp is invoked before 747 # warnings, then Carp starts by loading warnings, then warnings 748 # tries to import from Carp, and gets nothing because Carp is in 749 # the process of loading and hasn't defined its import method yet. 750 # So we work around that by manually exporting to warnings here. 751 no strict "refs"; 752 *{"warnings::$_"} = \&$_ foreach @EXPORT; 753} 754 7551; 756 757__END__ 758 759=head1 NAME 760 761Carp - alternative warn and die for modules 762 763=head1 SYNOPSIS 764 765 use Carp; 766 767 # warn user (from perspective of caller) 768 carp "string trimmed to 80 chars"; 769 770 # die of errors (from perspective of caller) 771 croak "We're outta here!"; 772 773 # die of errors with stack backtrace 774 confess "not implemented"; 775 776 # cluck, longmess and shortmess not exported by default 777 use Carp qw(cluck longmess shortmess); 778 cluck "This is how we got here!"; # warn with stack backtrace 779 my $long_message = longmess( "message from cluck() or confess()" ); 780 my $short_message = shortmess( "message from carp() or croak()" ); 781 782=head1 DESCRIPTION 783 784The Carp routines are useful in your own modules because 785they act like C<die()> or C<warn()>, but with a message which is more 786likely to be useful to a user of your module. In the case of 787C<cluck()> and C<confess()>, that context is a summary of every 788call in the call-stack; C<longmess()> returns the contents of the error 789message. 790 791For a shorter message you can use C<carp()> or C<croak()> which report the 792error as being from where your module was called. C<shortmess()> returns the 793contents of this error message. There is no guarantee that that is where the 794error was, but it is a good educated guess. 795 796C<Carp> takes care not to clobber the status variables C<$!> and C<$^E> 797in the course of assembling its error messages. This means that a 798C<$SIG{__DIE__}> or C<$SIG{__WARN__}> handler can capture the error 799information held in those variables, if it is required to augment the 800error message, and if the code calling C<Carp> left useful values there. 801Of course, C<Carp> can't guarantee the latter. 802 803You can also alter the way the output and logic of C<Carp> works, by 804changing some global variables in the C<Carp> namespace. See the 805section on L</GLOBAL VARIABLES> below. 806 807Here is a more complete description of how C<carp> and C<croak> work. 808What they do is search the call-stack for a function call stack where 809they have not been told that there shouldn't be an error. If every 810call is marked safe, they give up and give a full stack backtrace 811instead. In other words they presume that the first likely looking 812potential suspect is guilty. Their rules for telling whether 813a call shouldn't generate errors work as follows: 814 815=over 4 816 817=item 1. 818 819Any call from a package to itself is safe. 820 821=item 2. 822 823Packages claim that there won't be errors on calls to or from 824packages explicitly marked as safe by inclusion in C<@CARP_NOT>, or 825(if that array is empty) C<@ISA>. The ability to override what 826@ISA says is new in 5.8. 827 828=item 3. 829 830The trust in item 2 is transitive. If A trusts B, and B 831trusts C, then A trusts C. So if you do not override C<@ISA> 832with C<@CARP_NOT>, then this trust relationship is identical to, 833"inherits from". 834 835=item 4. 836 837Any call from an internal Perl module is safe. (Nothing keeps 838user modules from marking themselves as internal to Perl, but 839this practice is discouraged.) 840 841=item 5. 842 843Any call to Perl's warning system (eg Carp itself) is safe. 844(This rule is what keeps it from reporting the error at the 845point where you call C<carp> or C<croak>.) 846 847=item 6. 848 849C<$Carp::CarpLevel> can be set to skip a fixed number of additional 850call levels. Using this is not recommended because it is very 851difficult to get it to behave correctly. 852 853=back 854 855=head2 Forcing a Stack Trace 856 857As a debugging aid, you can force Carp to treat a croak as a confess 858and a carp as a cluck across I<all> modules. In other words, force a 859detailed stack trace to be given. This can be very helpful when trying 860to understand why, or from where, a warning or error is being generated. 861 862This feature is enabled by 'importing' the non-existent symbol 863'verbose'. You would typically enable it by saying 864 865 perl -MCarp=verbose script.pl 866 867or by including the string C<-MCarp=verbose> in the PERL5OPT 868environment variable. 869 870Alternately, you can set the global variable C<$Carp::Verbose> to true. 871See the L</GLOBAL VARIABLES> section below. 872 873=head2 Stack Trace formatting 874 875At each stack level, the subroutine's name is displayed along with 876its parameters. For simple scalars, this is sufficient. For complex 877data types, such as objects and other references, this can simply 878display C<'HASH(0x1ab36d8)'>. 879 880Carp gives two ways to control this. 881 882=over 4 883 884=item 1. 885 886For objects, a method, C<CARP_TRACE>, will be called, if it exists. If 887this method doesn't exist, or it recurses into C<Carp>, or it otherwise 888throws an exception, this is skipped, and Carp moves on to the next option, 889otherwise checking stops and the string returned is used. It is recommended 890that the object's type is part of the string to make debugging easier. 891 892=item 2. 893 894For any type of reference, C<$Carp::RefArgFormatter> is checked (see below). 895This variable is expected to be a code reference, and the current parameter 896is passed in. If this function doesn't exist (the variable is undef), or 897it recurses into C<Carp>, or it otherwise throws an exception, this is 898skipped, and Carp moves on to the next option, otherwise checking stops 899and the string returned is used. 900 901=item 3. 902 903Otherwise, if neither C<CARP_TRACE> nor C<$Carp::RefArgFormatter> is 904available, stringify the value ignoring any overloading. 905 906=back 907 908=head1 GLOBAL VARIABLES 909 910=head2 $Carp::MaxEvalLen 911 912This variable determines how many characters of a string-eval are to 913be shown in the output. Use a value of C<0> to show all text. 914 915Defaults to C<0>. 916 917=head2 $Carp::MaxArgLen 918 919This variable determines how many characters of each argument to a 920function to print. Use a value of C<0> to show the full length of the 921argument. 922 923Defaults to C<64>. 924 925=head2 $Carp::MaxArgNums 926 927This variable determines how many arguments to each function to show. 928Use a false value to show all arguments to a function call. To suppress all 929arguments, use C<-1> or C<'0 but true'>. 930 931Defaults to C<8>. 932 933=head2 $Carp::Verbose 934 935This variable makes C<carp()> and C<croak()> generate stack backtraces 936just like C<cluck()> and C<confess()>. This is how C<use Carp 'verbose'> 937is implemented internally. 938 939Defaults to C<0>. 940 941=head2 $Carp::RefArgFormatter 942 943This variable sets a general argument formatter to display references. 944Plain scalars and objects that implement C<CARP_TRACE> will not go through 945this formatter. Calling C<Carp> from within this function is not supported. 946 947 local $Carp::RefArgFormatter = sub { 948 require Data::Dumper; 949 Data::Dumper->Dump($_[0]); # not necessarily safe 950 }; 951 952=head2 @CARP_NOT 953 954This variable, I<in your package>, says which packages are I<not> to be 955considered as the location of an error. The C<carp()> and C<cluck()> 956functions will skip over callers when reporting where an error occurred. 957 958NB: This variable must be in the package's symbol table, thus: 959 960 # These work 961 our @CARP_NOT; # file scope 962 use vars qw(@CARP_NOT); # package scope 963 @My::Package::CARP_NOT = ... ; # explicit package variable 964 965 # These don't work 966 sub xyz { ... @CARP_NOT = ... } # w/o declarations above 967 my @CARP_NOT; # even at top-level 968 969Example of use: 970 971 package My::Carping::Package; 972 use Carp; 973 our @CARP_NOT; 974 sub bar { .... or _error('Wrong input') } 975 sub _error { 976 # temporary control of where'ness, __PACKAGE__ is implicit 977 local @CARP_NOT = qw(My::Friendly::Caller); 978 carp(@_) 979 } 980 981This would make C<Carp> report the error as coming from a caller not 982in C<My::Carping::Package>, nor from C<My::Friendly::Caller>. 983 984Also read the L</DESCRIPTION> section above, about how C<Carp> decides 985where the error is reported from. 986 987Use C<@CARP_NOT>, instead of C<$Carp::CarpLevel>. 988 989Overrides C<Carp>'s use of C<@ISA>. 990 991=head2 %Carp::Internal 992 993This says what packages are internal to Perl. C<Carp> will never 994report an error as being from a line in a package that is internal to 995Perl. For example: 996 997 $Carp::Internal{ (__PACKAGE__) }++; 998 # time passes... 999 sub foo { ... or confess("whatever") }; 1000 1001would give a full stack backtrace starting from the first caller 1002outside of __PACKAGE__. (Unless that package was also internal to 1003Perl.) 1004 1005=head2 %Carp::CarpInternal 1006 1007This says which packages are internal to Perl's warning system. For 1008generating a full stack backtrace this is the same as being internal 1009to Perl, the stack backtrace will not start inside packages that are 1010listed in C<%Carp::CarpInternal>. But it is slightly different for 1011the summary message generated by C<carp> or C<croak>. There errors 1012will not be reported on any lines that are calling packages in 1013C<%Carp::CarpInternal>. 1014 1015For example C<Carp> itself is listed in C<%Carp::CarpInternal>. 1016Therefore the full stack backtrace from C<confess> will not start 1017inside of C<Carp>, and the short message from calling C<croak> is 1018not placed on the line where C<croak> was called. 1019 1020=head2 $Carp::CarpLevel 1021 1022This variable determines how many additional call frames are to be 1023skipped that would not otherwise be when reporting where an error 1024occurred on a call to one of C<Carp>'s functions. It is fairly easy 1025to count these call frames on calls that generate a full stack 1026backtrace. However it is much harder to do this accounting for calls 1027that generate a short message. Usually people skip too many call 1028frames. If they are lucky they skip enough that C<Carp> goes all of 1029the way through the call stack, realizes that something is wrong, and 1030then generates a full stack backtrace. If they are unlucky then the 1031error is reported from somewhere misleading very high in the call 1032stack. 1033 1034Therefore it is best to avoid C<$Carp::CarpLevel>. Instead use 1035C<@CARP_NOT>, C<%Carp::Internal> and C<%Carp::CarpInternal>. 1036 1037Defaults to C<0>. 1038 1039=head1 BUGS 1040 1041The Carp routines don't handle exception objects currently. 1042If called with a first argument that is a reference, they simply 1043call die() or warn(), as appropriate. 1044 1045=head1 SEE ALSO 1046 1047L<Carp::Always>, 1048L<Carp::Clan> 1049 1050=head1 CONTRIBUTING 1051 1052L<Carp> is maintained by the perl 5 porters as part of the core perl 5 1053version control repository. Please see the L<perlhack> perldoc for how to 1054submit patches and contribute to it. 1055 1056=head1 AUTHOR 1057 1058The Carp module first appeared in Larry Wall's perl 5.000 distribution. 1059Since then it has been modified by several of the perl 5 porters. 1060Andrew Main (Zefram) <zefram@fysh.org> divested Carp into an independent 1061distribution. 1062 1063=head1 COPYRIGHT 1064 1065Copyright (C) 1994-2013 Larry Wall 1066 1067Copyright (C) 2011, 2012, 2013 Andrew Main (Zefram) <zefram@fysh.org> 1068 1069=head1 LICENSE 1070 1071This module is free software; you can redistribute it and/or modify it 1072under the same terms as Perl itself. 1073