Что делает Carp :: carp в Perl? - PullRequest
0 голосов
/ 02 апреля 2010

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

Ответы [ 2 ]

14 голосов
/ 02 апреля 2010

См. 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

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

3 голосов
/ 02 апреля 2010
...