windows - 如何让配置文件自动为所有页面添加 'global' 模块

标签 windows perl apache

我正在使用 perl 和 apache 构建一个内部自动化/web 工具。它托管在 Windows 环境中。我的问题是在处理许多具有通用模块的页面时。不是手动为每个页面添加每个模块,是否可以让“全局模块”拉入页面可用的所有模块?

例如,如果我需要添加一个新模块并且有 10 个页面,而不是进入每个页面并添加使用 New::Package;是否可以在 1 个配置文件中执行此操作,使 New::Package 可用于使用此配置模块的每个文件?

我用 PHP 做到了这一点,您在其中包含/需要一些初始化脚本,然后只需在每个页面上包含该初始化脚本。

Package MyProj::Configuration
use package1;
...
use package999;

# Main Page
use MyProj::Configuration;

# Now all modules are included in this page, without needing to add them manually

TLDR: 你能否让一个配置模块将多个模块/包导入到只包含这个神奇配置模块的页面中?

编辑:我想补充一点,我是 perl 的新手,所以如果这是显而易见的事情,请放轻松 :)

最佳答案

这根本不是一件显而易见的事情。 Exporter 模块提供了一个 export_to_level可以帮助解决这个问题的功能。通常,使用 Exporter(即,使包成为 Exporter 的子类)将符号导出到调用包中。 export_to_level 方法可以将符号导出到堆栈跟踪更高层的包中,这正是您想要在此处执行的操作。这是一个概念验证:

首先是一些具有导出函数的模块:

# Module1.pm
package Module1;
use base 'Exporter';
our @EXPORT = ('foo');
sub foo { "FOO" }
1;

# Module2.pm
package Module2;
use base 'Exporter';
our @EXPORT_OK = ('bar');
sub bar { "BAR" }
1;

# Module3.pm
package Module3;
use base 'Exporter';
our @EXPORT_OK = ('baz');
our %EXPORT_TAGS = ('all' => [ 'baz' ]);
sub baz { "BAZ" }
1;

而不是不得不说

use Module1;
use Module2 'bar';
use Module3 ':all';
use Module4;         # some other module that doesn't need to export anything

在几十个脚本中的每一个中,你宁愿只说

use Module1234;

所以这就是 Module1234.pm 的样子:

package Module1234; # optional
use Module1;
use Module2;
use Module3;
use Module4;

# these commands could go inside an  import  method, too.
Module1->export_to_level(1, __PACKAGE__);
Module2->export_to_level(1, __PACKAGE__, 'bar');
Module3->export_to_level(1, __PACKAGE__, ':all');
1;

正在打电话

package MyPackage;
use Module1234;

在您的脚本中将加载其他四个模块并处理将所有所需功能导出到 MyPackage 包,以及

use Module1234;
print foo(), bar(), baz();

足以生成输出 "FOOBARBAZ"

关于windows - 如何让配置文件自动为所有页面添加 'global' 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18193396/

相关文章:

windows - Wix:安装 MSMQ 组件

c# - 如何在 DataGridViewComboBoxColumn 中设置 SelectedIndex?

perl - 逻辑运算符 : When do we use operator OR and when do we use ||

regex - 如何获取嵌套捕获组中除最后一个匹配项之外的任何匹配项?

linux - htaccess 重写规则 windows/linux ,域到子页面

windows - 以编程方式向目录添加具有写入权限的 IIS_IUSRS

xml - Perl - XML/HoH 中的循环依赖检查

Apache 配置错误 需要全部

php - 如何让 PHP 在遇到错误时显示 Apache 的 500 错误页面,而不是空白页面?

php - 为什么只有一台服务器抛出错误 "Array to String Conversion"?