perl对象方法引用use string

时间:2013-01-28 07:57:49

标签: perl

perl对象“计划”具有子程序“ 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;

2 个答案:

答案 0 :(得分:3)

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

can方法将ref返回给方法。

答案 1 :(得分:0)

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

my $p = Plan->new;
my $t = "plan_exec_";
$p->${\"${t}time"};