- NAME
- SYNOPSIS
- DESCRIPTION
  - Forcing a Stack Trace

# NAME

carp - warn of errors (from perspective of caller)

cluck - warn of errors with stack backtrace (not exported by default)

croak - die of errors (from perspective of caller)

confess - die of errors with stack backtrace

# SYNOPSIS

        use Carp;
        croak "We're outta here!";

        use Carp qw(cluck);
        cluck "This is how we got here!";

# DESCRIPTION

The Carp routines are useful in your own modules because they act like `die()` or `warn(),` but report where the error was in the code they were called from. Thus if you have a routine `Foo()` that has a `carp()` in it, then the `carp()` will report the error as occurring where `Foo()` was called, not where `carp()` was called.

## Forcing a Stack Trace

As a debugging aid, you can force Carp to treat a croak as a confess and a carp as a cluck across all modules. In other words, force a detailed stack trace to be given. This can be very helpful when trying to understand why, or from where, a warning or error is being generated.

This feature is enabled by 'importing' the non-existant symbol 'verbose'. You would typically enable it by saying

        perl -MCarp=verbose script.pl

or by including the string `MCarp=verbose` in the PERL5OPT environment variable.