如何有条件地使用 Perl 中的模块?

2024-06-24

我想在 Perl 中做这样的事情:

$Module1="ReportHashFile1"; # ReportHashFile1.pm
$Module2="ReportHashFile2"; # ReportHashFile2.pm

if(Condition1)
{
  use $Module1;
}
elsif(Condition2)
{
  use $Module2;
}

ReportHashFile*.pm 包含一个包 ReportHashFile* 。

另外如何根据动态模块名称引用模块内部的数组?

@Array= @$Module1::Array_inside_module;

无论如何我可以实现这个目标吗?某种编译器指令?


您可能会发现if http://search.cpan.org/perldoc?if模块对此很有用。

否则基本思想是使用require,这发生在运行时,而不是use,这发生在编译时。注意 '

BEGIN {
    my $module = $condition ? $Module1 : $Module2;
    my $file = $module;
    $file =~ s[::][/]g;
    $file .= '.pm';
    require $file;
    $module->import;
}

至于寻址全局变量,如果您只是导出变量或将其返回给调用者的函数,那么您可以通过其非限定名称来使用它,这可能会更容易。否则,也可以使用方法并将其调用为$Module->method_name.

或者,您可以使用符号引用,如中所述perlref。然而,这通常是一种代码味道。

my @array = do {
    no strict 'refs';
    @{ ${ "${Module}::Array_inside_module" } };
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何有条件地使用 Perl 中的模块? 的相关文章

  • 是否有理由在 Perl 中使用 open(...) 的双参数形式?

    是否有任何理由使用双参数形式open 在 Perl 中而不是三个或更多参数的版本 我能想到的唯一原因是明显的观察结果 即两个参数的形式更短 但是假设冗长不是问题 是否有任何其他原因会让您选择双参数形式open 一参数和二参数 open 应用
  • 在perl中更改多维哈希的第一个键

    我在 perl 中有一个多维哈希 我想更改所选值的第一个键 例如 我有哈希 my Hash1 Hash1 1 12 1 Hash1 1 10 1 Hash1 2 31 1 Hash1 3 52 1 Hash1 3 58 1 Hash1 4
  • 在 Perl 中如何用空格填充字符串的一部分?

    你更喜欢哪个版本 usr bin env perl use warnings use strict use 5 010 my p 7 33 my prompt my key very important text my value Hell
  • 在 ExtUtils::MakeMaker 下调用 gcc -pthread

    指定编译和链接的正确方法是什么 pthread not lpthread 在 Makefile PL 中 据我了解 应该调用 gcc pthread针对 pthread 进行构建时 因为此标志会扩展为正确的特定于平台的标志以进行编译和链接
  • 添加到表现异常的 Perl 哈希

    我试图通过将时间标签从事件内移动到其父级内来更改一些 XML 以按时间对事件进行分组 那是
  • 为什么我的 Perl 线程在第一次运行时随机执行,但在后续运行时按顺序执行?

    在测试问题代码的过程中如何在 Perl 中的调用之间存储每个线程的状态 https stackoverflow com questions 2317114我注意到 第一次执行脚本时 线程执行彼此很好地交错 但在脚本的所有后续执行中 所有线程
  • 如何防止插件执行有害代码

    我目前正在为我的学士论文开发一个非常模块化和基于插件的框架 主要思想是 我的应用程序结构中有一个名为plugins您可以在其中放置已编译的插件 例如 dll 文件 符合特殊接口IPlugin 然后 应用程序使用用户选择的插件执行任务 因此
  • Perl 标识符中允许使用哪些字符?

    我正在做正则表达式作业 其中一个问题是 使用在线语言参考手册确定 Java Python Perl 和 C 的整数常量和标识符的正则表达式 我不需要关于正则表达式的帮助 我只是不知道 Perl 中的标识符是什么样的 我找到了描述有效标识符的
  • Qt 要包含哪些标头?

    使用 Qt 使用 C 进行编程时 我应该包含哪些内容 仅包含 2 个 include
  • 如何在 Perl 中不阻塞地测试 STDIN?

    我正在编写我的第一个 Perl 应用程序 一个 AOL Instant Messenger 机器人 它与 Arduino 微控制器对话 后者控制一个伺服系统 按下我们系统管理员服务器上的电源按钮 该服务器每 28 小时左右就会随机冻结一次
  • Flutter:热重载后被发送回初始页面

    我在用颤振模块将我的应用程序分离到某个模块中 一切看起来都很好 直到我注意到每次执行热重载时 我的应用程序都会自动跳回到登录页面哪个 也是最初的 这是我的设置 class AppWidget extends StatelessWidget
  • perl 中的大写重音字符

    有没有办法在perl中大写重音字符 my string l phant print uc string 这样它实际上会打印 L PHANT 我的 perl 脚本以 ISO 8859 1 编码 string 以相同编码打印在 xml 文件中
  • 如何在 Perl 中生成数组的所有排列?

    生成所有内容的最佳 优雅 简单 高效 方式是什么 n perl 中数组的排列 例如 如果我有一个数组 arr 0 1 2 我想输出所有排列 0 1 2 0 2 1 1 0 2 1 2 0 2 0 1 2 1 0 它可能应该是一个返回迭代器的
  • sed:用匹配的模式替换第 n 个单词?

    我有一个具有以下特征的文本文件 每行至少有三个由空格分隔的 单词 单词 可以是任何字符或字符串 我在一些行中附加了一些注释 并提出了对原始单词进行更改的初步建议 现在想使用 sed 为我进行这些更改 因此 为了提供更清晰的图片 我的文件如下
  • Visual Studio - 查找哪些模块导致 C1905(处理器不兼容)

    我正在尝试使用 Visual Studio 2005 进行 x64 版本的项目 当前失败 并出现链接器错误 C1905 前端和后端不兼容 必须针对相同的处理器 根据我收集的信息 这本质上是说我的 x64 构建正在尝试与 x86 模块链接 不
  • Bash IF:多个条件

    我已经尝试让这件事工作几个小时 但我无法让它工作 if P SFTP a PORT 22 P FTPS PORT 990 a PORT 21 then 有人能帮我吗 我知道多个条件可以这样写 if P SFTP PORT 22 then 但
  • “read”和“sysread”有什么区别?

    read http perldoc perl org functions read html and sysread http perldoc perl org functions sysread html有非常相似的文档 两者有何区别 A
  • Perl - Win32 - 如何从另一个进程非阻塞读取文件句柄?

    我正在编写一些通过 STDIN 与客户端进程通信的服务器代码 我正在尝试编写一段 Perl 代码 用于异步接收来自客户端 STDOUT 的响应 代码的阻塞版本可能如下所示 sub read from client my file handl
  • 在 Xcode 4 中设置系统搜索路径

    我正在尝试在 C 命令行项目中设置 Xcode 4 中的头搜索路径 使用 LLVM 2 0 clang 作为编译器 以便我可以通过以下方式包含库头文件 include
  • 如何覆盖 Template Toolkit 模板文件中的 WRAPPER?

    有没有办法禁用WRAPPER那是设置在新的 配置 http search cpan org dist Template Toolkit lib Template pm 通过模板或临时覆盖parse 我想要一个默认值WRAPPER 我将用于

随机推荐

  • C++ 检测类型是否有模板参数

    我想统一一个接口来处理模板化和非模板化类型 有没有办法确定类型 例如类或函数指针 是否依赖于模板参数 例如 struct foo template
  • 如何将占位符属性与 Html.EditorFor 一起使用?

    我想在 Html EditorFor 中使用占位符属性 所以我就像第一个答案中那样 Html5 占位符与 NET MVC 3 Razor 编辑器用于扩展 https stackoverflow com questions 5824124 h
  • 当未实现 Seek 时,如何推进来自 std::io::Read 特征的数据?

    从实现的类型中读取的最佳方式是什么std io Read当输出的内容不重要时的特征 我看到的可能选项是 循环读取单个字节 分配一个潜在巨大向量并读取它 介于两者之间的东西 循环读入固定大小的缓冲区 前两个选项似乎不太理想 第三个还可以 但不
  • WP7 中的浏览器屏幕截图为位图

    我正在尝试在 Windows Phone 上将给定 URL 的屏幕截图作为位图图像 WebBrowser类似乎没有DrawToBitmap方法 有关如何使其正常工作的任何指示 Use WriteableBitmap渲染WebBrowser控
  • 终止用户会话

    我有 3 个标签 主页 选项卡 1 选项卡 2 当用户启动应用程序时 它会定向到 主页 选项卡 我使用以下命令创建一个新会话HttpSession session request getSession 当用户浏览到其他选项卡时 我使用以下方
  • IN SQL Server 是 CLR 线程安全的

    我在 SQL Server 和 Exchange Web 服务之间的 CLR 中有一个接口 用于在应用程序之间同步和发送电子邮件 在测试中它可以正常工作 没有任何问题 我们在生产环境中发现了零星问题 其中较长的 Web 服务任务似乎重叠 我
  • C# 将十进制序列化为 xml

    我有一个小数属性 比如 XmlElementAttribute DataType decimal decimal Price 问题是我想强制它始终以 2 的精度进行序列化 但如果价格是 10 50 它将被序列化为 XML 例如
  • jQuery UI 可拖动约束

    我想做的是在一个较小的 div 中包含一个大图像 用户可以在包含的 div 中拖动它 足够简单 类似于http oneblackbear com draggable index html http oneblackbear com drag
  • 工作人员未正确返回的结果 - 雪 - 调试

    我正在使用snow在 R 中封装以在 a 上执行函数SOCK具有在 Linux 操作系统上运行的多台计算机 3 的集群 我尝试用两者运行代码parLapply and clusterApply 如果工作线程级别出现任何错误 工作节点的结果将
  • Bootstrap 4 灵活响应式导航栏菜单

    请注意 我不是问如何对齐导航栏菜单中的项目 左或右 而是问如何动态地将项目从导航栏移动到下拉菜单 I m using Bootstrap 4 1 in my project My top main menu contains many li
  • 为什么变量名通常以字母“m”开头? [复制]

    这个问题在这里已经有答案了 查看 Android 教程 例如记事本教程 http developer android com resources tutorials notepad notepad ex1 html 我注意到几乎所有变量的命
  • R:检测“主”路径并删除或过滤 GPS 轨迹,可能使用内核?

    有没有办法过滤掉那些不属于主路径的部分 正如您在图片中看到的 我想删除划掉的部分 同时保留主路径 我已经尝试使用动物园 滚动中位数但没有成功 我想我可能可以使用某种内核来完成这项任务 但我不确定 我还尝试了不同的平滑方法 功能 但这些方法
  • 单击另一个元素时触发下拉选择框

    我正在尝试 替换 选择输入上的按钮 我查看了 jquery 中的选择替换插件 但在我看来它们都有点臃肿 我想要实现的是一个简单的跨度 位于选择框的下拉按钮上 单击它时使选择选项下降 这是我所拥有的 document ready functi
  • 错误:使用替代方法写入重载方法值:

    我正在尝试读取固定宽度的文件并将其写入文本文件 下面是代码 输入文件布局字段的长度 4 10 3 5 3 1 1 5 7 094482018 07 10 022 14012 000 0 30000A 002290 059412018 07
  • CSS 中的下拉菜单?

    我正在寻找一种构建下拉菜单的方法 基本上 我有一个网站 底部有不同的按钮 其中一些应该有下拉菜单 以便鼠标悬停时在其上方显示一些按钮 哦 我想要一个不需要大型库甚至不需要 javascript 的解决方案 但这只是因为它更干净 使用 jav
  • 确定时间序列数据的 SOM(自组织映射)中的集群成员资格

    我也在做一个需要对时间序列数据进行聚类的项目 我正在使用在 MATLAB 中运行的 SOM 工具箱进行聚类 但遇到了以下问题 我们如何确定哪些数据属于哪个集群 SOM从数据集中随机选择数据样本 并为每个数据样本找到BMU 据我所知 SOM算
  • 带空格的 Elastic Search 通配符查询失败 7.11

    我在 7 11 版中将我的数据编入弹性搜索索引 这是我直接将文档添加到索引时得到的映射 properties name type text fields keyword type keyword ignore above 256 我还没有添
  • jQuery 承诺是否符合 Promises/A+

    我读过了本文 http thewayofcode wordpress com 2013 01 22 javascript promises and why jquery implementation is broken 这是基于著名的多梅尼
  • Eclipse 无法识别智能卡库

    从 Sun 的 jdk 1 8 迁移到 Openjdk12 后 Eclipse 无法识别 javax smartcardio 的整个库 例如 import javax smartcardio Card 会导致错误 Card cannot b
  • 如何有条件地使用 Perl 中的模块?

    我想在 Perl 中做这样的事情 Module1 ReportHashFile1 ReportHashFile1 pm Module2 ReportHashFile2 ReportHashFile2 pm if Condition1 use