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.