我希望有一个包含对子函数的引用的哈希,我可以根据用户定义的变量调用这些函数,我将尝试给出一个我正在尝试做的简化示例.
my %colors = (
vim => setup_vim(),
emacs => setup_emacs(),
)
$colors{$editor}(arg1, arg2, arg3)
Run Code Online (Sandbox Code Playgroud)
where setup_vim()和setup_emacs()将是我的文件中稍后定义的子函数,并且$editor是用户定义的变量(即vim或emacs).这可能吗?我无法让它工作,或找到有关该主题的良好信息.谢谢.
(注意我现在已经实现了它作为一个工作的Switch,但我认为像上面这样的哈希会更容易在现有代码中添加新条目)
bti*_*lly 18
这是语法.
my %colors = (
vim => \&setup_vim,
emacs => \&setup_emacs,
);
$colors{$editor}(@args)
Run Code Online (Sandbox Code Playgroud)
请注意,您实际上可以直接创建函数
my %colors = (
vim => sub {...},
emacs => sub {...},
);
Run Code Online (Sandbox Code Playgroud)
如果你熟悉闭包,那么Perl支持对已经被声明为lexically的变量的完全闭包,你可以用我的.