私は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から詳細レベルと関数を継承することです。
パッケージ間で詳細機能を共有するために従うことができるデザインパターンはありますか?すでにこれを行うことができるモジュールはありますか?