Perl循环使用模块

时间:2014-04-17 09:01:50

标签: perl moose

我需要知道这种使用模块的做法是否正常:

MyApp.pm

package MyApp;
use Moose;
use MyApp::View;
use MyApp::Config;

sub view {
    return MyApp::View->new;
}
sub config {
    return MyApp::Config->new;
}

MyApp的/ View.pm

package MyApp::View;
use Moose;
extends qw(MyApp);

sub render {
}

MyApp的/ Config.pm

package MyApp::Config;
use Moose;
extends qw(MyApp);

sub get {
}

App.cgi

#App.cgi
use Moose;
extends qw(MyApp);
my $view = MyApp->view();
my $config = MyApp->config();
....

我很困惑,因为我使用了#34;使用MyApp :: View"在MyApp中然后使用"扩展qw(MyApp);"在Config模块中。那被认为是不好的循环吗?。

关于这一点的想法我想在AppApp中的同一个实例中使用View和Config模块共享MyApp模块中的所有方法和变量。

1 个答案:

答案 0 :(得分:3)

这很正常,并不是特别糟糕。唯一需要注意的是在编译和运行MyApp::ViewMyApp::Config的包体时,MyApp将无法完全编译,其中一些方法可能会不存在,因为在MyAppMyApp::View加载之后,MyApp::Config无法继续编译。在应用程序的正常执行期间(use MyApp完成之后),没有这样的问题。由于您在BEGIN块或包体中没有做任何有趣的事情,我没有看到任何问题。