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;
答案 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"};