0

perl 对象“ plan ”有子程序“ plan_exec_time ”;

my $p = Plan->new;

我可以这样称呼它:$p->plan_exec_time

$p->"plan_exec_time"不工作。

现在我想通过变量访问子程序参考:

my $t = "plan_exec_";

$p->"${t}time"

这也行不通

如何访问对象的子程序但不通过创建临时变量?

因为这有效:

my $x = "${t}time";
$p->$x;
4

2 回答 2

3
my $t = "plan_exec";
$p->can($t."_time")->($p)

can方法将引用返回给该方法。

于 2013-01-28T08:00:40.857 回答
0

我不明白你为什么要避免使用临时变量 - 任何其他解决方案都将是丑陋和 hacky。但是你可以一次性引用和取消引用一个字符串,就像这样

my $p = Plan->new;
my $t = "plan_exec_";
$p->${\"${t}time"};
于 2013-01-28T09:06:41.487 回答