在运行时加载模块
require Exporter;
这将确保 Exporter
模块在运行时加载(如果尚未导入)。 (另见: perldoc -f require
。)
注意: 大多数用户应该使用模块而不是模块 4。与 use
不同,require
不会调用模块的 import 方法,而是在运行时执行,而不是在编译期间执行。
如果在运行之前无法确定所需的模块,这种加载模块的方法很有用,例如使用插件系统:
package My::Module;
my @plugins = qw( One Two );
foreach my $plugin (@plugins) {
my $module = __PACKAGE__ . "::Plugins::$plugin";
$module =~ s!::!/!g;
require "$module.pm";
}
这会尝试加载 My::Package::Plugins::One
和 My::Package::Plugins::Two
。@plugins
当然应该来自一些用户输入或配置文件,这是有意义的。请注意替换运算符 s!::!/!g
,它用斜杠替换每对冒号。这是因为只有当模块名称是一个单词时,才可以使用 use
中熟悉的模块名称语法加载模块。如果传递字符串或变量,则必须包含文件名。