in reply to Carp; errors ala DBI

Hmm... aren't you trying too hard? Can't you just do:
sub carp { if($should_i_stay_or_should_i_go) { require Carp; goto &Carp::carp; } else { # process locally ... } }