Carp
use Carp; croak "We're outta here!"; use Carp qw(:DEFAULT cluck); cluck "This is how we got here!";
The Carp module lets you write
modules whose functions report errors the way built-in operators
report errors—from the perspective of the users of your module. The
Carp module supplies routines that you use much
like the standard built-in functions warn and
die, but that change the filename and line number
so it looks like the error originated from the user's code instead of
your code. In short, Carp is great way to misdirect
blame.
There are actually four functions. The carp
function works like the warn operator, but with
caller-relative filename and line number information. The
croak function works like die
does—raising an exception—but again gives caller-relative information.
If you prefer a longer lament, use cluck and
confess instead of carp and
croak respectively, and you'll get a full stack
backtrace reporting who called whom and with what arguments (in the
library with a lead pipe, no doubt). You have to import
cluck explicitly, because it's not normally
exported. People don't often want full stack traces on mere warnings,
for some reason.