【问题标题】:What does Carp::carp do in Perl?Carp::carp 在 Perl 中做了什么?
【发布时间】:2011-02-03 15:11:27
【问题描述】:

谁能用示例 Perl 代码解释一下carp 子例程?

【问题讨论】:

    标签: perl carp


    【解决方案1】:

    请参阅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
    

    额外的信息有助于追踪您可能错误地使用函数或模块的地方。

    【讨论】:

    【解决方案2】:
    猜你喜欢
    • 2018-03-20
    • 1970-01-01
    • 2011-12-19
    • 2010-09-16
    • 2012-05-26
    • 1970-01-01
    • 2014-07-27
    • 2016-03-07
    • 2012-05-27
    相关资源
    最近更新 更多