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

标签 perl

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

示例:

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

但是如果在'mymethod'中被另一个方法调用:

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

如何编写“mymethod”以便它处​​理这两种情况?还是我从根本上做错了什么?

最佳答案

就像你这样做一样:

$p->mymethod(1,2,3);

您需要明确说明调用方法的对象(即使是在类中):

$self->mymethod(1,2,3);

关于perl - 在 Perl 中,如何确保从同一对象的方法中调用 sub 作为方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7728417/

相关文章:

xml - 查找两个元素之间的相对 XPath 的最有效方法是什么?

perl - 如果哈希键未在初始哈希定义中定义,有没有办法使 perl 编译失败?

loops - 将与模式匹配的行打印到文件 A,如果不匹配则打印到文件 B

perl - CR vs LF perl 解析

字符串上下文中的 Perl 条件运算符

sql - 将值传递给 Sybase 查询时,避免 Perl 中 SQL 注入(inject)的最佳方法是什么?

linux - Perl 库版本 (5.10.1) 与可执行版本 (v5.18.4) 不匹配

regex - Perl 任意位置的可选组

perl - 使用带有乘法运算符的子程序的明显奇怪

html - Perl 到 MySQL html 文本