有什么方法可以在perl中将函数声明为变量?

玛哈·拉克希米(Maha Lakshmi)

例如,下面给出伪代码。根据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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在c中将函数声明为变量

可以在Java中将实例变量声明为静态变量

可以在python中将静态变量声明为私有吗?

在JAVA中将引用变量声明为接口类型有什么好处?

有没有一种方法可以在Svelte中将props声明为可选

在 Swift 中将可选函数输入声明为 nil 有什么作用?

如何在Kotlin中将函数声明为变量

如何在flutter(dart)中将异步函数声明为变量?

FFI函数可以修改未声明为可变的变量吗?

如何在 Maplesoft 中将通用变量声明为时间的函数,以便可以应用链规则?

是否可以在Dart的类中将方法声明为final?

在Typings声明中将函数声明为参数

为什么全局变量没有在没有将其重新声明为局部变量的函数内更新?

javascript-首先将变量声明为函数的目的是什么?(两次声明变量)

在C中将函数参数声明为const

为什么我需要将这个函数声明为extern。没有它就可以工作

将方法声明为静态有什么好处

为什么C ++编译器可以将函数声明为constexpr,而不能将其声明为constexpr?

我可以在同一个文件中将全局变量声明为 Flow 吗?

是否可以在VBA中将用户输入字符串声明为变量?

您可以在C语言中的main中将变量声明为结构吗?

在原型中添加函数,而不是在OOP Javascript中将其声明为变量

直接使用函数或将其声明为变量

Golang测试声明为变量的函数(testify)

变量或字段(函数)声明为无效

有什么方法可以更改函数外部定义的变量或函数

为什么不能在 Kotlin 中将“`main`”函数声明为 lambda?

为什么在C#8.0中将局部函数声明为static

在SwiftUI中将视图声明为View主体内的变量时,出现“函数声明不透明的返回类型[...]”错误