[PerlChina] 求助如何动态加载模块, dynamic load Module

Qiang ( James ) Li shijialee at gmail.com
Sun Dec 2 21:06:03 PST 2007


rorot wrote:
> 诸位好,
> 
> 感谢各位上次指导我的关于HTML::DOM, Mozilla::Mechanize的诸多问题。甚至于 
> jzhang提出的Class::DBI模块,我觉得很好用。正用在了目前的模块中。

Class::DBI 是 Perl 里最老的一个 ORM 模块,虽然稳定,但使用 Class::DBI 的
人很多已经转到 DBIx::Class 上了,既然你是刚开始使用 ORM,我推荐你使用
DBIx::Class 或 Rose::DB。

另外,我碰巧要用从网页的 DOM 里提取数据,试了一下 Web::Scraper 发现很好
用。http://search.cpan.org/~miyagawa/Web-Scraper-0.24/lib/Web/Scraper.pm
文档里的例子就能说明它的用途。

> 
> 这次我碰到的问题是: 如何在我自己编写的package里,动态加载别的模块?
> 具体是这样的。在我的主模块里是MVC(Module, View, Control)结构,其View输出 
> 分至少3种,或HTML, 或XML, 或Console Text. 这三种输出,分别由3个不同的 
> View模块实现。
> 

程序是运行在 mod_perl 下的么?如果是的话那就没有必要动态加载。即使在
plain cgi 下,多加载一个或两个模块对运行速度到底有多大区别?

常说的一句话:在你没有找到瓶颈的时候,不要做无谓的提速。

动态加载你可以使用 require :

if ( $output_type = 'xml' ) {
    eval { require XML::OUTPUT };
    die if $@;
    print $xml_output;
}

Qiang


More information about the China-pm mailing list