0

我有一个基本功能,用于在 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 > package0.pm > package1.pm > package2.pm。每个文件都必须设置下一个文件的详细标志,以便每个文件都能正常工作。

我现在认为这是一个不优雅的解决方案,因为重复的代码以及每个“父文件”都需要设置每个子文件的详细级别。我希望每个 *.pm 文件从 entry.pl 继承详细级别和功能。

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

4

1 回答 1

2

也许看看 Log::Log4Perl - 可以作为您自己的实现工作的模型,也可以作为潜在的替代品。

于 2013-02-04T22:54:32.453 回答