См. perldoc
для карпа .
carp
является альтернативой функции Perl warn
, которая использует информацию трассировки стека, чтобы показать вам, где вы вызвали функцию, выдавшую предупреждение. Это может быть более полезным, чем поведение warn
, сообщающее вам, где произошло предупреждение.
Пример:
Эта программа:
1: sub square_root {
2: my $arg = shift;
3: if ($arg < 0) {
4: warn "Can't take square root of a negative number";
5: } else {
6: return sqrt($arg);
7: }
8: }
9: print square_root(-4);
говорит вам:
Can't take square root of a negative number at carpdemo.pl line 4.
Но если мы изменим warn
на carp
:
1: use Carp;
2: sub square_root {
3: my $arg = shift;
4: if ($arg < 0) {
5: carp "Can't take square root of a negative number";
6: } else {
7: return sqrt($arg);
8: }
9: }
10: print square_root(-4);
он говорит вам:
Can't take square root of a negative number at carpdemo.pl line 4
main::square_root(-4) called at carpdemo.pl line 10
Дополнительная строка информации полезна для отслеживания мест, где вы, возможно, неправильно используете функцию или модуль.