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;