给定一个perl模块Foo.pm,方法是aSub()和bSub()
my $obj = Foo->new();
my $x = $obj->aSub($argA);
my $y = $obj->bSub($argB);
我有一个TAP程序,我在其中构建一个哈希数组:
my $test_case = [
'aSub' => "foobar",
'bSub' => "whobar"
];
我希望能够解析数组并使用key / value元素来调用Foo对象$ obj上的方法;
像静态方法一样:
if ($key eq 'aSub') {
$obj->aSub($value)
} elsif ($key eq 'bSub') {
$obj->bSub($value);
}
...
我更喜欢多态地这样做,所以我不必对方法进行硬编码:
$obj->{$key}($value) #or something of the sort
我尝试了几种使用引用和/或glob的方法,但我一直在收到错误:
错误:抛出异常:aSub未定义
测试::线束捕获错误并打印不太有用的消息?
答案 0 :(得分:14)
调用名称在变量中的方法很简单:
my $key = 'aSub';
my $value = 'foobar';
my $obj = Foo->new();
$obj->$key($value);