诸位好,<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 &#39;Foo::View::HTML&#39;;<br>use autouse &#39;Foo::View::XML&#39;;<br>use autouse &#39;Foo::View::Console&#39;;
<br><br>sub output {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $self = shift;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $view_arg = shift;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($view_arg eq &quot;HTML&quot;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $view = Foo::View::HTML-&gt;new;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $view-&gt;output(&quot;something&quot;);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br>}<br><br><br>但是运行直接报错,说是找不到HTML模块。。。。<br><br><br>