On a meta level ...
Personally I find the interface not too convincing
- The words "carp", "cluck" and "croak" are far from basic English and hard to explain to colleagues. ( Why do ravens "die" while a fish only "warns"?)
- The connotation to the caller is not evident for me. (Do ravens croak to (telephone) callers?)
- Sometimes I'd like to also have a stack-trace for warn/die (i.e. from the actual error line - yes I know Devel::Confess but why an extra module?)
Sometimes I don't know how many levels up the user of my module called. Having an option to "carp" from the first caller in a different package would be nice. (This is more a nice to have) happens already.
I ended up writing my own routines handling all of this, because we have to install our own die-handlers too, but I'm far from having a convincing solution yet.
Even considering the interface ...
... maybe something like warn_up $level, msg with special "levels", like a package-regex or something and negative numbers for stack-trace.
Nevertheless thanks for the question, frontpaged! =)