Perl:如何在许多独立脚本之间共享大量模块的导入?

前端之家收集整理的这篇文章主要介绍了Perl:如何在许多独立脚本之间共享大量模块的导入?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有很多独立的脚本.他们唯一共享的是,他们使用()一大组CPAN模块(每个模块都导出几个函数).我想集中这个模块列表.我发现了几种方法.哪一个是最好的?

>我可以创建SharedModules.pm来导入所有内容,然后使用Exporter手动将所有内容导出到main ::.
>我可以创建以“package main”开头的SharedModules.pm所以它会直接导入main ::.它似乎工作.这是不好的做法,为什么?
>我可以要求()一个似乎将所有内容导入main ::的sharedmodules.pl.我不喜欢这种方法,因为在mod_perl下,require()不能很好地工作.

第二个看起来对我来说最好,但是我想知道为什么例如Modern :: Perl不能那样工作.

编辑:我认为这个问题已经是asked before了.

解决方法

您提出的所有三种解决方案的问题在于,可以从另一个模块使用该模块,在这种情况下,符号应该导出到使用模块的包中,而不是导入到main中.

bvr使用调用者将东西直接导入到该包中的解决方案是朝着正确方向迈出的重要一步,但是阻止“真正的”包使用ShareableModules qw(foo bar baz);有选择地仅导入它实际需要的东西.

遗憾的是,保留选择性导入的能力将要求您从基础模块导入所有相关符号,然后从ShareableModules重新导出它们.您不能只将导入委托给每个底层模块的导入方法(如Modern :: Perl那样),因为如果要求输入该模块未导出的符号,则导入会死亡.如果这不是问题,那么Modern :: Perl的做法可能是最干净,最简单的选择.

原文链接:https://www.f2er.com/Perl/171941.html

猜你在找的Perl相关文章