Perl - 冗长级别的模式?

时间:2013-02-04 22:50:14

标签: perl

我有一个基本功能,用于在perl包中打印详细级别的消息:

# 0 = no output, 1 = debug output
our $verbosity = 0;
sub msg {
    (my $verbLevel, my $format, my @addArgs) = @_;
    if ($verbLevel <= $verbosity) {
        printf($format, @addArgs);
    }
}

这是IMO在包内的优雅解决方案,因为要打印调试消息,我可以简单地做:

msg(1, "Some debug message");

然而,在实践中,这个包在长链包中被“使用”,每个包也使用详细程度特征。让我们说使用链是这样的:entry.pl&gt; package0.pm&gt; package1.pm&gt; package2.pm。每个文件必须设置下一个文件的详细标记,以使每个文件正常工作。

我现在认为这是一个不优雅的解决方案,因为重复的代码和每个“父文件”的要求设置它的每个孩子的详细程度。我希望发生的是每个* .pm文件从entry.pl继承详细级别和函数。

我是否可以遵循设计模式来跨包共享详细功能?那里有一个可以做到这一点的模块吗?

1 个答案:

答案 0 :(得分:2)

或许看一下Log :: Log4Perl - 作为一个模型,可以用于您自己的实现,也可以作为潜在的替代品。