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

前端之家收集整理的这篇文章主要介绍了从字符串中调用perl模块的方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
给定一个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的方法,但我一直在收到错误

Error: Threw an exception: aSub is not defined

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

解决方法

调用名称在变量中的方法很简单:
my $key = 'aSub';
my $value = 'foobar';
my $obj = Foo->new();

$obj->$key($value);
原文链接:https://www.f2er.com/Perl/172258.html

猜你在找的Perl相关文章