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 に答える