【发布时间】:2011-02-03 15:11:27
【问题描述】:
谁能用示例 Perl 代码解释一下carp 子例程?
【问题讨论】:
谁能用示例 Perl 代码解释一下carp 子例程?
【问题讨论】:
请参阅perldoc for Carp。
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
额外的信息有助于追踪您可能错误地使用函数或模块的地方。
【讨论】: