小编sam*_*mmy的帖子

通过引用调用模块函数

我正在寻找构建一个调度表来调用我写的许多Perl模块.

举个例子,如果我有一个Hello.pm带有简单函数的包hello(),我想获得这个函数的代码引用.

以下不起作用:

my $code_ref=\&Hello->hello();
$code_ref->();
Run Code Online (Sandbox Code Playgroud)

但是如果从包中导出函数hello,则以下工作原理:

my code_ref=\&hello;
code_ref->();
Run Code Online (Sandbox Code Playgroud)

有没有人知道第一种情况的正确语法?或者这根本不可能?

最后,我想用我的所有代码引用填充哈希表.

#####感谢所有答案

几个答案指出的正确调用是:

my $code_ref=\&Hello::hello;
$code_ref->();
Run Code Online (Sandbox Code Playgroud)

我在10个不同的文件中有10个模块,我想在调度表中加载.这使我更容易将配置作为数据加载,并与代码分开.这允许我在测试平台中加载其他模块而无需修改我的代码 - 只需修改配置文件即可.高阶Perl的作者Mark Dominus对此有一些很好的例子.

perl module dynamic subroutine

4
推荐指数
2
解决办法
1728
查看次数

标签 统计

dynamic ×1

module ×1

perl ×1

subroutine ×1