SYNOPSIS
use Carp::Always;
makes every "warn()" and "die()" complains loudly in the calling package and elsewhere. More often used on the command line:
perl -MCarp::Always script.pl
DESCRIPTION
This module is meant as a debugging aid. It can be used to make a script complain loudly with stack backtraces when warn()ing or die()ing.Here are how stack backtraces produced by this module looks:
# it works for explicit die's and warn's $ perl -MCarp::Always -e 'sub f { die "arghh" }; sub g { f }; g' arghh at -e line 1 main::f() called at -e line 1 main::g() called at -e line 1 # it works for interpreter-thrown failures $ perl -MCarp::Always -w -e 'sub f { $a = shift; @a = @$a };' \ -e 'sub g { f(undef) }; g' Use of uninitialized value in array dereference at -e line 1 main::f('undef') called at -e line 2 main::g() called at -e line 2
In the implementation, the "Carp" module does the heavy work, through "longmess()". The actual implementation sets the signal hooks $SIG{__WARN__} and $SIG{__DIE__} to emit the stack backtraces.
Oh, by the way, "carp" and "croak" when requiring/using the "Carp" module are also made verbose, behaving like "cluck" and "confess", respectively.
EXPORT
Nothing at all is exported.ACKNOWLEDGMENTS
This module was born as a reaction to a release of Acme::JavaTrace by Sebastien Aperghis-Tramoni. Sebastien also has a newer module called Devel::SimpleTrace with the same code and fewer flame comments on docs. The pruning of the uselessly long docs of this module were prodded by Michael Schwern.Schwern and others told me ``the module name stinked'' - it was called "Carp::Indeed". After thinking long and not getting nowhere, I went with nuffin's suggestion and now it is called "Carp::Always". "Carp::Indeed" which is now deprecate lives in its own distribution (which won't go anywhere but will stay there as a redirection to this module).
BUGS
Every (un)deserving module has its own pet bugs.- This module does not play well with other modules which fusses around with "warn", "die", $SIG{'__WARN__'}, $SIG{'__DIE__'}.
- Test scripts are good. I should write more of these.
- I don't know if this module name is still a bug as it was at the time of "Carp::Indeed".
AUTHOR
Adriano Ferreira, <[email protected]>COPYRIGHT AND LICENSE
Copyright (C) 2005-2012 by Adriano R. FerreiraThis library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.