代码之家  ›  专栏  ›  技术社区  ›  dlamotte

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

  •  7
  • dlamotte  · 技术社区  · 15 年前

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

    我在Python中看到过类似的事情,实现也比较简单,但在Perl中,我认为这会更难一些。

    1 回复  |  直到 15 年前
        1
  •  19
  •   Andomar    15 年前

    需要时加载模块

    如果需要在运行时加载整个模块,则使用 require . 但要导入,需要额外的代码。以下是示例:

    ## 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' );
    }
    

    使用模块功能时加载模块

    你也可以 use autouse 仅在使用模块功能时加载模块。例如:

    ## will load module when you call O_EXCL()
    use autouse Fcntl => qw( O_EXCL() );
    

    仅在使用时加载函数

    也有 SelfLoader 模块,它允许您仅在需要时加载单个函数。看一看 AutoLoader 做了几乎相同事情的模块。

    我还建议阅读以下共同赞助的食谱: Perl Cookbook .