Я не так часто использовал Карпа, потому что обычно катался самостоятельно. Однако, следуя принципам основных модулей, я использую его сейчас. Однако, похоже, это едва ли лучше, чем предупредить / умереть.
Кроме того, что вообще делает кудахтанье / исповедь / многословие? Я запустил этот короткий сценарий, чтобы получить представление о том, как выглядит результат (потому что документация 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();
ОБНОВЛЕНИЕ: скрипт обновлен с именами пакетов, и это действительно имеет значение. Тем не менее, Carp по-прежнему кажется очень простым с точки зрения регистрации информации и не поддерживает вывод в Интернет. Думаю, я посмотрю на другие, такие как CGI :: Carp, Log :: Output и Log :: Log4Perl.
package
, вам пригодятсяcarp
иcroak
. как указано cmj. - person David W.   schedule 08.04.2013The Carp routines are useful in your own modules because they act like die() or warn(), but with a message which is more likely to be useful to a user of your module.
Не очень полезно, если вы лично не используете пакеты и не видите разницу. - person David W.   schedule 08.04.2013