在Perl中调用函数的方法?

Sri*_*m P 2 perl perlscript

我可以通过动态获取子程序来调用子程序,如下所示:

printf "Enter subroutine name:"; 
 $var1=<STDIN>;      #input is E111;
 $var1(); 
Run Code Online (Sandbox Code Playgroud)

E111:

sub E111(){
    printf "Hi this is E111 & Bye \n";
}
Run Code Online (Sandbox Code Playgroud)

有没有可能这样做,我是perl编程的新手.

zdi*_*dim 7

您在Perl中可以做的事情很少有硬性限制,但这是您不想去的地方之一.一个常见的方法是使用调度表

my %call = (
    'name_1' => sub { function body },   # inline, anonymous subroutine
    'name_2' => \&func,                  # or take a reference to a sub
    ...
);
Run Code Online (Sandbox Code Playgroud)

其中sub {}匿名的子程序,所以对于值name_1是一个代码的参考.

然后你用它作为

my $name = <STDIN>;
chomp $name;

$call{$name}->(@arguments);  # runs the code associated with $name
Run Code Online (Sandbox Code Playgroud)

这会找到$name哈希中的键并取消引用它的值,即coderef; 所以它运行该代码.

文档:概述perlintro,教程perlreftut和参考perlrefperlsub.