私はPerlプロジェクトを持っていますが、循環パッケージ呼び出しを行うことで問題が発生しました。以下のコードは問題を示しています。
これが実行されると、各パッケージは、コンピュータのすべてのメモリが消費されてロックされるまで、他のパッケージを呼び出します。これは悪い設計であり、このような循環呼び出しを設計で行うべきではないことに同意しますが、私のプロジェクトは十分に大きいため、実行時にこれを検出したいと思います。
弱体化関数とData::Structure :: Utilについて読みましたが、循環パッケージロードがあるかどうかを検出する方法がわかりません(反復ごとに新しいコピーが作成されて保存されるため、想定しています) $ thisハッシュの各コピーで)。何か案は?
use system::one;
my $one = new system::one();
package system::one;
use strict;
use system::two;
sub new {
my ($class) = @_;
my $this = {};
bless($this,$class);
# attributes
$this->{two} = new system::two();
return $this;
}
package system::two;
use strict;
use system::one;
sub new {
my ($class) = @_;
my $this = {};
bless($this,$class);
# attributes
$this->{one} = new system::one();
return $this;
}