我正在调用一个方法如下:
$self->class->method
我想将此方法的引用作为参数传递给子例程。
我试过了
\&{ $self->class->method }
但是我收到以下错误:
Unable to create sub named ""
关于如何做到这一点的任何想法?
答案 0 :(得分:3)
你可以参考静态类方法,但在你的情况下你可以使用匿名闭包来实现类似的,
my $ref = sub { $self->class->method };
# ..
my $result = $ref->();
答案 1 :(得分:2)
class
方法有点奇怪。我希望一个名称类似的方法返回类字符串,但它显然返回一个对象,因为它有一个方法method
。
我建议您使用UNIVERSAL::can
,它返回对给定方法的引用(如果存在)。所以你可以编写像这样的代码
my $method_ref = $self->class->can('method');
mysub($method_ref);
答案 2 :(得分:0)
您还可以使用curry
模块来实现此目的:
use curry;
my $mref = $self->class->curry::method;