小编MEH*_*MEH的帖子

从字符串中调用perl模块的方法

给定一个perl模块Foo.pm,方法是aSub()和bSub()

my $obj = Foo->new();
my $x = $obj->aSub($argA);
my $y = $obj->bSub($argB);
Run Code Online (Sandbox Code Playgroud)

我有一个TAP程序,我在其中构建一个哈希数组:

my $test_case = [
   'aSub' => "foobar",
   'bSub' => "whobar"
];  
Run Code Online (Sandbox Code Playgroud)

我希望能够解析数组并使用key/value元素来调用Foo对象$ obj上的方法;
像静态方法一样:

if ($key eq 'aSub') {
  $obj->aSub($value)
} elsif ($key eq 'bSub') {
  $obj->bSub($value);
}
...
Run Code Online (Sandbox Code Playgroud)

我宁愿多态地这样做,所以我不必硬编码方法:

$obj->{$key}($value) #or something of the sort  
Run Code Online (Sandbox Code Playgroud)

我尝试了几种使用引用和/或glob的方法,但我一直在收到错误:

错误:抛出异常:未定义aSub

Test :: Harness捕获错误并打印不太有用的消息?

perl

8
推荐指数
1
解决办法
3922
查看次数

标签 统计

perl ×1