如何传递对$ self-> class->方法的引用?

时间:2014-12-03 12:04:06

标签: perl

我正在调用一个方法如下:

$self->class->method

我想将此方法的引用作为参数传递给子例程。

我试过了

\&{ $self->class->method }

但是我收到以下错误:

Unable to create sub named ""

关于如何做到这一点的任何想法?

3 个答案:

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