如何在Perl中实现惰性模块加载?

如何在Perl中实现惰性模块加载?,perl,lazy-loading,Perl,Lazy Loading,如何在Perl中实现延迟模块加载 我在python中也看到过类似的情况,实现稍微简单一些,但在Perl中,我认为这会有点困难。根据需要加载模块 如果需要在运行时加载整个模块,可以使用。但对于导入,您需要额外的代码。下面是一个例子: ## this function is almost the same ## as "use My::Module qw( :something )" sub load_big_module_at_runtime { ## load module in r

如何在Perl中实现延迟模块加载

我在python中也看到过类似的情况,实现稍微简单一些,但在Perl中,我认为这会有点困难。

根据需要加载模块 如果需要在运行时加载整个模块,可以使用。但对于导入,您需要额外的代码。下面是一个例子:

## this function is almost the same 
## as "use My::Module qw( :something  )"
sub load_big_module_at_runtime {
    ## load module in runtime
    require My::Module;
    ## do import explicty if you need it
    My::Module->import( ':something' );
}
使用其功能时加载模块 您还可以仅在使用模块的功能时加载模块。例如:

## will load module when you call O_EXCL()
use autouse Fcntl => qw( O_EXCL() );
仅在使用时加载函数 还有一个模块,它允许您仅在需要时加载单个函数。看看模块,它做的事情几乎相同


我还建议您阅读以下相关食谱。

您答案的第二部分非常有趣。我不知道这个模块的存在。谢谢再看看
SelfLoader
模块。有没有人使用
if
来实现这一点?
if
在您需要决定:加载还是不加载模块时是有用的。为什么您认为在Perl中会更难?我想这主要是一种直觉。没有什么实质性的东西。