I have the same problem as in Can't disable stack trace in Carp::croak() for some reason. Because every call in the stack is considered "safe", croak()
prints out a full stack trace every time. I'd like to disable that for certain calls.
Here's an example:
use Carp;
sub this_may_fail {
# Some code...
croak "This call failed!";
}
sub regular_code {
this_may_fail();
}
regular_code();
Both subroutines are in the same package, so this_may_fail
is automatically marked as safe. Is there any way to tell Carp that this_may_fail
should be considered unsafe?
It's regular_code
that's considered "safe" by this_may_fail
. The check is based on namespace, so to make it unsafe, you'd place this_may_fail
in a different namespace.
Or write your own croaker.
perl -e'
use Carp qw( );
sub untrusting_croak {
goto &Carp::croak if $Carp::Verbose;
my @caller = caller(1);
die(join("", @_)." at $caller[1] line $caller[2]\n");
}
sub f { untrusting_croak("!!!"); } # Line 9
f(); # Line 11
'
!!! at -e line 11
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With