诸位好,<br><br>感谢各位上次指导我的关于HTML::DOM, Mozilla::Mechanize的诸多问题。甚至于jzhang提出的Class::DBI模块,我觉得很好用。正用在了目前的模块中。<br><br>这次我碰到的问题是: 如何在我自己编写的package里,动态加载别的模块?<br>具体是这样的。在我的主模块里是MVC(Module, View, Control)结构,其View输出分至少3种,或HTML, 或XML, 或Console Text. 这三种输出,分别由3个不同的View模块实现。
<br><br>问题是:当我要输出是,只会调用一种输出模式。而具体要用哪个输出模块,根据运行时参数决定。我不想把三种输出模式都包进来,而是想到了具体该用哪个模块时,再加载。 如何解决呢?<br><br>我尝试了使用autouse的方式:<br><br>use autouse 'Foo::View::HTML';<br>use autouse 'Foo::View::XML';<br>use autouse 'Foo::View::Console';
<br><br>sub output {<br> my $self = shift;<br> my $view_arg = shift;<br><br> if ($view_arg eq "HTML")<br> {<br> my $view = Foo::View::HTML->new;<br> $view->output("something");
<br> }<br> <br> ...<br>}<br><br><br>但是运行直接报错,说是找不到HTML模块。。。。<br><br><br>