Perl中不带自参数的调用方法

Perl中不带自参数的调用方法,perl,oop,method-call,Perl,Oop,Method Call,我想知道是否可以在不传递自参数的情况下从对象调用方法 例如,我有一个软件包: package MyPackage; sub new { my $class = shift; return bless {}, $class; } sub test { print("called(" . join(', ', @_) . ")\n"); } 从脚本中,我调用构造函数,然后调用test方法: my $obj = MyPackage->new(); $obj->

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

例如,我有一个软件包:

package MyPackage;

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

sub test {
    print("called(" . join(', ', @_) . ")\n");
}
从脚本中,我调用构造函数,然后调用
test
方法:

my $obj = MyPackage->new();
$obj->test("str");
给我以下输出:

called(MyPackage=HASH(0x55b05d481f48), str)
有没有办法(即使不是最佳实践或使用一些“奥术” 语言的特性)调用
测试
方法,只使用引用
$obj
而不隐式传递“self”参数

一句话,有没有可能这样做:

$objXXXXtest("str");

使用假设的构造和get
调用(str)
作为输出?

直接调用函数,而不是作为对象的方法:

myPackage::test("str");

这有点不正统,但返回一个代码引用,您可以在不使用referent的情况下调用它

$obj->can("test")->("str");
是的,这将是执行此操作的“正常方式”,但我只获得了
$obj
引用,我不知道对象的类。