在Perl中调用没有self参数的方法

Hen*_*ton 3 oop perl method-call

我想知道是否可以在不传递self参数的情况下从对象调用方法.

举个例子,我有一个包:

package MyPackage;

sub new {
    my $class = shift;
    return bless {}, $class;
}

sub test {
    print("called(" . join(', ', @_) . ")\n");
}
Run Code Online (Sandbox Code Playgroud)

从脚本中,我调用构造函数,然后调用test方法:

my $obj = MyPackage->new();
$obj->test("str");
Run Code Online (Sandbox Code Playgroud)

给我以下输出:

called(MyPackage=HASH(0x55b05d481f48), str)
Run Code Online (Sandbox Code Playgroud)

是否有任何方法(即使它不是最佳实践或使用该语言的某些"神秘"功能)test仅使用引用调用该方法 $obj而不隐式传递"self"参数.

总之,是否有可能做到这样的事情:

$objXXXXtest("str");
Run Code Online (Sandbox Code Playgroud)

XXXX假设的结构得到called(str)输出?

mob*_*mob 8

它有点非正统,但会UNIVERSAL::can返回一个代码引用,您可以在没有引用的情况下调用它.

$obj->can("test")->("str");
Run Code Online (Sandbox Code Playgroud)