2012-07-31 3 views
1

저는 Perl에 익숙하지 않지만 간단한 스크립트를 작성하기 위해 사용하고 있습니다. 이 스크립트는 Qualys와 인터페이스하므로 샘플 코드를 살펴본 동안 Qualys API에 대한 정보를 찾아 보았습니다. Pastebin.com (here)에 올려 놓았으므로 다운로드하지 않아도됩니다. 어떤 이유에서든 직접 다운로드하려는 경우 here은 소스를 다운로드 할 수있게하려는 페이지에 대한 링크입니다 ("Get Map"입니다).이 오브젝트 생성 문 이해하기

$request = new HTTP::Request GET => $url; 

내가 명령문의 newGET => $url 부품에 대한 혼란 스러워요 :

은 어쨌든, 여기 나에게 혼란 조금있는 문 (라인 261)입니다.

  1. 은 내가 주로 명령문의 new 부분에 무슨 일이 일어나고 있는지 이해 생각하지만, 사람이 줄을 명확히하는 데 유용한 새로운 LWP::UserAgent을 만들어 함께 HTTP::Request 작품 (I는 해당 UserAgent :: LWP 보았다 방법을 설명 할 수 있다면 CPAN에 있지만, new 서브 루틴 설명 아래에있는 "KEY/DEFAULT"표는 나에게 거의 의미가 없습니다.)
  2. 나는 진술의 일부인 GET => $url에서 어떤 일이 벌어지고 있는지 전혀 모른다. 내 생각 엔 HTTP::Request 또는 LWP::UserAgent 중 하나에 값을 할당하고 있지만 그 아이디어를 백업 할 정보를 찾을 수 없습니다.

답변

6

주어진 광고는

$request = HTTP::Request->new('GET', $url); 

예 간접법 구문에서 사용되는 기입 될 수있는

$request = HTTP::Request->new(GET => $url); 

동일하다. followes로

HTTP::RequestLWP::UserAgent 간의 연결은 CPAN documentation에서 스케치 :

require HTTP::Request; 
$request = HTTP::Request->new(GET => 'http://www.example.com/'); 

$ua = LWP::UserAgent->new; 
$response = $ua->request($request); 

그래서 HTTP:.Request->new(...)사용자 에이전트에 의해 대

+0

감사를 실행할 수있는 새로운 요청을 작성 설명. 나는 당신이 패키지의 앞에 모듈을 넣음으로써'new'를 호출 할 수 있다는 것을 결코 알지 못했다. –

+2

모든 클래스 또는 객체 메소드를 사용하여이를 수행 할 수 있습니다. 예 : '$ ua-> request ($ request)'대신'request $ ua $ request; '를 사용할 수 있습니다. 대부분의 사람들은'new' ('new Class @ args')를 위해서만 사용합니다. 왜냐하면 그들은 C++이나 Java를 사용하고 prentend하고, 역사적인 이유로'print' ('print $ fh $ stuff')를 사용하기를 좋아하기 때문입니다. 그들은 그것을 전혀 사용하지 않는다고 가정합니다. – ikegami

+2

간접 메서드 구문을 사용하는 것은 바람직하지 않습니다. 간접 메서드 구문을 사용하면 모호한 구문 분석이 발생할 수 있기 때문입니다. – cjm

관련 문제