---
name: "Carp"
section: "3pm"
platform: "linux"
package: "perl-5.004-doc"
version: "5.004.05-6"
release: "Debian 2.2 (Potato)"
platforms: ["linux"]
url: "https://new.carta.tech/Carp/3pm"
---

# Carp(3pm)

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

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

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

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 the *PERL5OPT* manpage environment variable.
