我尝试使用Module :: Load从目录动态加载插件,但即使在最大限度地简化代码之后它也无法正常工作。 主文件:
#!/usr/bin/perl
use strict;
use warnings;
use Module::Load;
Module::Load::load_remote('Package', 'plugins/Blank.pm') or die;
插件/ Blank.pm:
#!/usr/bin/perl
package plugins::Blank;
use strict;
use warnings;
1;
但它仍然死亡。当我删除'...或die'部分时,它没有死亡,但Package仍未加载。
答案 0 :(得分:0)
com.dropbox.core.v2.DbxFiles$ListFolderException: Exception in list_folder: ListFolderError.{".tag":"path","path":{".tag":"other"}}
在失败时死亡,但不会返回任何内容。您的示例适用于我,并加载包。如果它没有加载包,它应该在Module::Load::load_remote
内死亡。 load_remote
仅加载导出到其他命名空间的函数。如果另一个模块作为模块名称而不是文件名加载,它似乎也可以工作:
load_remote
:
load.pl
#!/usr/bin/perl
use strict;
use warnings;
use Module::Load;
Module::Load::load_remote("Package","plugins::Blank","hw");
Package::hw();
:
plugins/Blank.pm
输出:
Hello World
但要达到你想要的效果,你可以使用这样的方法:
package plugins::Blank;
use strict;
use warnings;
use Exporter qw(import);
our @EXPORT_OK = qw(hw);
sub hw {
print "Hello World\n";
}
1;