例如,下面给出伪代码。根据x的输入,如果x为func1,则必须调用func1()。如果x为func2,则必须调用func2()。有没有办法做到这一点。我不想使用if或switch case语句。还有其他方法可以根据用户输入进行函数调用吗?(类似于将函数视为变量?
sub func1()
{...}
sub func2()
{...}
sub mainfunc()
{
x = <STDIN>;
x();
}
安全的方法是使用名称哈希来映射到子例程,这样恶意用户就无法调用任意子。就像是:
my %table = ("func1" => \&func1, "func2" => \&func2);
my $x = <STDIN>;
chomp $x;
if (exists $table{$x}) {
$table{$x}->();
} else {
# Handle error
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句