我有一个如下所示的测试文件:
my $int = new Services::Plugins::FTP::ftp;
$int->AddUser("durr");
该模块有以下代码:
sub AddUser {
my( @username ) = @_;
print "@_\n";
}
但我的结果如下: 服务::插件:: FTP :: FTP = HASH(0x2490160)杜尔
我只想要'durr'。
为什么我会得到额外的东西?
答案 0 :(得分:9)
你正在处理面向对象的Perl。如果在对象实例上调用函数(如$instance->function()
的情况),则第一个参数是对实例本身的引用。它通常被称为$self
。
常用的习惯用法是编写如下的实例方法:
sub some_method {
my ($self, @args) = @_;
}
我建议你阅读perlootut man page中的Perl面向对象系统(一个很好的教程)。
答案 1 :(得分:5)
$foo->bar()
的第一个参数是$foo
sub AddUser {
my($self, @username ) = @_;
print "@_\n";
}
答案 2 :(得分:3)
您正在使用面向对象的方法($int->AddUser("durr")
是方法调用)。调用方法时,第一个参数始终是应该应用方法的对象或类。