私は一般的に自分でロールしたので、Carpをあまり使用していません。ただし、コアモジュールを維持するという精神で、現在はそれを使用しています。ただし、warn/dieよりもかろうじて優れているようです。
さらに、cluck / confess / verboseは何をしますか?この短いスクリプトを実行して、出力が次のようになっていることを確認しました(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はログ情報に関してはまだ非常に基本的であるように思われ、Web出力をサポートしていません。CGI :: Carp、Log :: Output、Log::Log4Perlのような他のものを見てみようと思います。