此问题已在此处有答案:
How to "use" multiple modules with one "use"?(3个答案)
How can I export a list of modules with my own module?(1个答案)
3天前关闭。
例如,如果有以下模块,我想导入:
- My::Plugin::FeatureA
- My::Plugin::FeatureB
- My::Plugin::AnotherFeature
我这样做:
use My::Plugin::FeatureA;
use My::Plugin::FeatureB;
use My::Plugin::AnotherFeature;
是否有一个模块来合并这些语句?即给定一个前缀和名称列表,其样式类似于:
use IMPORTER qw<My::Plugin FeatureA FeatureB AnotherFeature>;
这个例子没有说明导出的非默认符号,但是我很好奇是否存在这样的东西,或者是否应该创建这样的东西。Plack::Builder
具有用于中间件/插件的构建器子例程,这是我所追求的风格。但是,我们的想法是将其用作pragma。
1条答案
按热度按时间wvt8vs2t1#
我把问题问'* 我如何合并导入语句 *',它说它如何试图编写一个模块来实现他们所示的所需导入语句,但他们如何遇到微妙的问题。(他们一定是说错了,所以这看起来像是一个软件推荐的问题,他们准备编辑这个问题,纠正这个印象。)
无论如何,问题中所示的期望的导入/pragma语句让我觉得是不可能的--首先,如何适应导入列表,当然这些列表在这些模块中可能会有所不同?一旦我们开始了,那么pragma呢?等等
编写一个组装导入语句的模块实际上确实很棘手,因为不能只是堆积这些导入语句。但他们已经做到了--参见Import::Into。
来自概要
然后你在你的程序中
use My ::MultiExporter;
。这里有一个草图,也许更重要的是,组装模块
然后,我们会加载想要的bundle,比如
use LoadModules qw(base utils);
等。为了更进一步,让subs加载bundle,这样就可以在不重复代码的情况下组合选项
当然还有其他的方法来组织论点;或者仅仅通过经由调度表加载它们来使它们的处理自动化。
这种方法在程序中缺少导入符号的列表,但这是一个一直存在的难题,即如何最好地简化导入语句,同时又对导入进行文档化。
上面的代码是一个草图,需要工作,但希望它是有用的。