Я не использовал Carp так много, потому что я вообще катился самостоятельно. Однако, в духе соблюдения модулей Core, я использую его сейчас. Однако кажется, что это едва лучше, чем предупреждать/умирать.
Кроме того, что делает cluck/confess/verbose даже делать? Я запустил этот короткий script, чтобы понять, как выглядит вывод (потому что документы Carp этого делать не делают). Он выглядит точно так же при любом запуске (помимо случайных строк).
#!/usr/bin/perl
package Warning;
sub warning {
warn "warn";
}
package CWarn;
use Carp qw(carp cluck);
sub cwarn {
int(rand(2)) ? carp "carp" : cluck "cluck";
}
package Fatal;
use Carp qw(confess croak);
sub fatal {
int(rand(2)) ? confess "confess" : croak "croak";
}
package Loop;
use v5.10;
sub loop {
say '=' x 80;
Warning::warning();
CWarn::cwarn();
loop() unless ($c++ > 10);
Fatal::fatal();
}
package main;
Warning::warning();
CWarn::cwarn();
Loop::loop();
UPDATE: Обновлен script с именами пакетов, и это имеет значение. Тем не менее, Carp по-прежнему кажется очень простым с точки зрения информации о регистрации, и он не поддерживает веб-выход. Думаю, я посмотрю на другие, такие как CGI:: Carp, Log:: Output и Log:: Log4Perl.