读书人

Perl 怎么自动加载模块的

发布时间: 2012-02-29 16:44:11 作者: rapoo

Perl 如何自动加载模块的?
本人学习Perl 没有多久,最近要完成一个功能,需要从 XML 文件里读取配置信息,配置信息里保存的是某个自己写的模块,比如:

<action name= "init " class= "MyApp::Action::Init "/>

这里的 MyApp::Action::Init 就是我的 Init.pm 的完整包路径,我现在需要在我的一个Perl程序里使用这个模块。

比如我用如下方法得到了我的包路径

my $action = $xmlref-> getAction( 'action.xml ');
print $action # 得到一个保存了字符串 MyApp::Action::Init 的变量

我现在希望通过得到的这个完整路径得到一个这个模块的对象

$myaction = new $action();

这样的方法在

use MyApp::Action::Init;

的情况下是可以成功的,但是这里 MyApp::Action::Init 是通过动态读取 xml 文件得到的,每次可能都不一样,我不能直接采用硬编码的方式写在代码中,于是我想采用

use $action;

这样的方式,结果就出错了

请问大家这样的问题怎么解决呢 ? 谢谢 !!!

[解决办法]
$modname = "MyApp::Action::Init ";
$modname =~ s/::/\//g;

require "$basedir/$modname.pm ";
[解决办法]
或者直接 require $action;

读书人网 >perl python

热点推荐