1use warnings; 2use strict; 3 4use Test::More tests => 20; 5 6use Carp (); 7 8sub AA::CARP_TRACE { $! = 42; $^E = 42; "Tracy" } 9my $aa = bless({}, "AA"); 10 11my($m, $errno, $exterr); 12 13$! = 69; $^E = 69; 14sub lmm { Carp::longmess("x") } 15sub lm { lmm() } 16$m = lm($aa); 17$errno = 0+$!; $exterr = 0+$^E; 18like $m, qr/Tracy/; 19is $errno, 69; 20is $exterr, 69; 21 22$! = 69; $^E = 69; 23sub sm { Carp::shortmess("x") } 24$m = sm($aa); 25$errno = 0+$!; $exterr = 0+$^E; 26like $m, qr/Tracy/; 27is $errno, 69; 28is $exterr, 69; 29 30$SIG{__WARN__} = sub { $m = $_[0]; $errno = 0+$!; $exterr = 0+$^E; }; 31 32$! = 69; $^E = 69; 33$m = $errno = $exterr = undef; 34sub cl { Carp::cluck("x") } 35cl($aa); 36like $m, qr/Tracy/; 37is $errno, 69; 38is $exterr, 69; 39 40$! = 69; $^E = 69; 41$m = $errno = $exterr = undef; 42sub cp { Carp::carp("x") } 43cp($aa); 44like $m, qr/Tracy/; 45is $errno, 69; 46is $exterr, 69; 47 48$SIG{__DIE__} = $SIG{__WARN__}; 49delete $SIG{__WARN__}; 50 51$! = 69; $^E = 69; 52$m = $errno = $exterr = undef; 53sub cf { Carp::confess("x") } 54eval { cf($aa) }; 55like $@, qr/Tracy/; 56like $m, qr/Tracy/; 57is $errno, 69; 58is $exterr, 69; 59 60$! = 69; $^E = 69; 61$m = $errno = $exterr = undef; 62sub ck { Carp::croak("x") } 63eval { ck($aa) }; 64like $@, qr/Tracy/; 65like $m, qr/Tracy/; 66is $errno, 69; 67is $exterr, 69; 68 69delete $SIG{__DIE__}; 70 711; 72