在Perl中,如何确保从同一对象的方法中调用sub作为方法?

Kyl*_*ers 2 perl

我有一个有一个新方法的类,并使用该对象调用方法X.当我从对象调用X时,参数的第一个值是$ self,其余的是我发送的值.现在当我调用它时来自对象的另一个方法的方法,第一个值不再是$ self,而只是发送的值.如何解决这种情况?

样品:

my $p = TEST->new;
$p->mymethod(1,2,3);  # @_ = 'self, 1, 2, 3'
Run Code Online (Sandbox Code Playgroud)

但如果'mymethod'被另一种方法调用:

sub anothermethod{
  my ($self, $a) = @_;
  mymethod(1,2,3);  # @_ = '1,2,3'  
}
Run Code Online (Sandbox Code Playgroud)

如何编写'mymethod'以便处理这两种情况?或者我从根本上做错了什么?

ste*_*enl 9

就像你这样做:

$p->mymethod(1,2,3);
Run Code Online (Sandbox Code Playgroud)

你需要明确你正在调用方法的对象(甚至在类中):

$self->mymethod(1,2,3);
Run Code Online (Sandbox Code Playgroud)