我的代码非常简单。我在名为smconfig的包下有一个subroutin getModemHost。
sub getModemHost {
print 'Modem-'.$_[0].'.Host';
}
当我用一个参数调用这个subroutin时,我看到的是奇怪的值而不是我传递的值。下面的行打印出Modem-smconfig = HASH(0x9433968).Host。我期待Modem-1.Host
$smconfig->getModemHost(1)
答案 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
...
};