Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
perl对象方法引用使用字符串_Perl - Fatal编程技术网

perl对象方法引用使用字符串

perl对象方法引用使用字符串,perl,Perl,perl对象“plan”具有子例程“plan\u exec\u time” 我可以这样称呼它:$p->plan\u exec\u time 但是$p->“计划执行时间”dos不起作用 现在我想通过变量refer访问子程序: my $t = "plan_exec_"; $p->"${t}time" 这也是行不通的 如何访问对象的子例程,但不通过创建临时变量 因为这是可行的: my $x = "${t}time"; $p->$x; can方法返回该方法的ref can方法返回该方法

perl对象“plan”具有子例程“plan\u exec\u time

我可以这样称呼它:
$p->plan\u exec\u time

但是
$p->“计划执行时间”
dos不起作用

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

my $t = "plan_exec_";

$p->"${t}time"
这也是行不通的

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

因为这是可行的:

my $x = "${t}time";
$p->$x;
can
方法返回该方法的ref


can
方法返回该方法的ref。

我不明白您为什么要避免使用临时变量-任何其他解决方案都会很难看和粗糙。但是您可以一次性引用和取消引用字符串,如下所示

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

我不明白你为什么要避免使用一个临时变量——任何其他的解决方案都是丑陋的和有攻击性的。但是您可以一次性引用和取消引用字符串,如下所示

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

您能否显示调用此函数时收到的错误消息?请检查
计划
模块的路径。如下所示:
perl-e Plan.pm
调用此函数时,是否可以显示收到的错误消息?请检查
Plan
模块的路径。这样:
perl-eplan.pm
一些解释将有助于操作。一些解释将有助于操作
my $p = Plan->new;
my $t = "plan_exec_";
$p->${\"${t}time"};