将参数传递给 Perl class 子例程

Passing argument to a Perl class subroutin

我的代码很简单。我在名为 smconfig 的包下有一个子程序 getModemHost。

sub getModemHost {
   print 'Modem-'.$_[0].'.Host';
}

当我用参数调用这个子例程时,我看到了奇怪的值,而不是我传递的值。下面一行打印 Modem-smconfig=HASH(0x9433968).Host。我期待调制解调器-1.Host

$smconfig->getModemHost(1)

方法的第一个参数是调用者,即对象。使用 $_[1] 作为真正的第一个参数。或者,更具可读性:

sub getModemHost {
    my ($self, $modem_number) = @_;
    print "Modem-$modem_number.Host";
}

详情见perlobj

或者一些很常见的东西:

sub myObjectMethod {
    my $self = shift;

    ...

    # do here what you like to do with $_[0]
    # for we have removed the first parameter

    ...

};