2012-10-15 5 views
1

나는 다음과 같다 테스트 파일이 :이 모듈은이 코드가얻기 잘못된 결과

my $int = new Services::Plugins::FTP::ftp; 
$int->AddUser("durr"); 

:

sub AddUser { 

my(@username) = @_; 
print "@_\n"; 

} 

을하지만 내 결과는 다음과 같습니다 서비스 :: 플러그인을 :: FTP :: ftp = HASH (0x2490160) durr

그냥 'durr'하고 싶습니다.

왜 나는 여분의 재료를 얻고 있습니까?

답변

9

당신은 객체 지향 Perl을 다루고 있습니다. 귀하의 경우와 마찬가지로 객체 인스턴스에서 $instance->function()으로 함수를 호출하면 첫 번째 매개 변수가 인스턴스 자체에 대한 참조가됩니다. 가장 자주는 $self이라고합니다.

일반적으로 사용되는 관용구는 다음과 같이 인스턴스 메서드를 작성하는 것입니다 :

sub some_method { 
    my ($self, @args) = @_; 
} 

난 당신이 perlootut man page (좋은 튜토리얼)에서 펄의 객체 지향 시스템에서 읽어 좋습니다. 당신은 객체 지향 접근 방식을 ($int->AddUser("durr")방법 호출입니다)를 사용하는 $foo

sub AddUser { 
    my($self, @username) = @_; 
    print "@_\n"; 
} 
5

첫 번째 인수입니다. 메서드를 호출 할 때 첫 번째 인수는 항상 메서드 또는 메서드를 적용해야하는 개체입니다.