perl – Carp/Croak,Cluck/Confess和verbose选项有什么区别?

前端之家收集整理的这篇文章主要介绍了perl – Carp/Croak,Cluck/Confess和verbose选项有什么区别?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我没有使用鲤鱼这一切,因为我一般滚动我自己。然而,在保持与核心模块的精神,我现在使用它。然而,它似乎只是比警告/死亡更好。

此外,什么是cluck / confess / verbose甚至做什么?我运行这个短脚本来获得输出看起来像(因为Carp文档不这样做)。它看起来完全相同的任何运行(除了随机字符串)。

#!/usr/bin/perl

  package Warning;

  sub warning {
    warn "warn";
  }

  package CWarn;
  use Carp qw(carp cluck);

  sub cwarn {
    int(rand(2)) ? carp "carp" : cluck "cluck";
  }

  package Fatal;
  use Carp qw(confess croak);

  sub fatal {
    int(rand(2)) ? confess "confess" : croak "croak";
  }

  package Loop;

  use v5.10;

  sub loop {
    say '=' x 80;
    Warning::warning();
    CWarn::cwarn();
    loop() unless ($c++ > 10);
    Fatal::fatal();
  }

  package main;

  Warning::warning();
  CWarn::cwarn();
  Loop::loop();

更新:更新了包名称的脚本,它的确有所作为。然而,Carp仍然在记录信息方面看起来非常基本,并且它不支持Web输出。我想我会看看其他的像CGI :: Carp,Log :: Output和Log :: Log4Perl。

解决方法

您的示例的问题是所有的subs都在同一个包(默认包:main)。这不是 Carp的设计用例。

鲤鱼旨在用于模块。原因是当模块遇到问题时,通常是因为模块的调用者传递了错误的数据。因此,不是报告模块发现问题的行,通常更有用的是报告调用模块的行(来自模块外部的代码)。这就是Carp导出的函数

有2套yes / no选项。该功能可以是致命的(如die)或非致命的(如warn)。它可以只报告调用函数的行,或者它可以报告完整的backtrace。

Fatal  Backtrace
carp       N        N
cluck      N        Y
croak      Y        N
confess    Y        Y

verbose选项强制回溯。也就是说,它使鲤鱼表现得像线索,克罗克表现得像承认。你可以使用它,当你意识到你需要更多的调试信息,但不想更改代码使用承认。

原文链接:https://www.f2er.com/Perl/173484.html

猜你在找的Perl相关文章