Что делает Carp::carp в Perl?

Может кто-нибудь, пожалуйста, объясните мне о carp подпрограмма с образцом кода Perl?

2 ответа

Решение

Увидеть 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

Дополнительная строка информации полезна для отслеживания мест, где вы, возможно, неправильно используете функцию или модуль.

Другие вопросы по тегам