将参数传递给Perl类子例程

时间:2015-01-10 00:20:02

标签: perl

我的代码非常简单。我在名为smconfig的包下有一个subroutin getModemHost。

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

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

$smconfig->getModemHost(1)

2 个答案:

答案 0 :(得分:5)

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

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

有关详细信息,请参阅perlobj

答案 1 :(得分:0)

或者非常普遍的事情:

sub myObjectMethod {
    my $self = shift;

    ...

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

    ...

};