理解此对象创建语句

Aus*_*ore 1 perl object

我对Perl不是很熟悉,但我正在使用它来编写一个简单的脚本.此脚本将与Qualys连接,因此在查找有关Qualys API的信息时,我在查看示例代码时发现了此语句.我把它放在Pastebin.com(这里),所以你不必下载它来查看它.如果由于某种原因你想自己下载它,这里有一个指向我想要能够下载源代码的页面的链接(它是"获取地图").

无论如何,这是声明(第261行),让我有点困惑:

$request = new HTTP::Request GET => $url;
Run Code Online (Sandbox Code Playgroud)

我感到困惑的newGET => $url语句的部分.

  1. 我想我大部分都知道new声明的部分是怎么回事,但是如果有人能够解释如何HTTP::Request创建一个LWP::UserAgent有助于澄清这一行的新工作(我在CPAN上看了LWP :: UserAgent,但是"KEY/DEFAULT" "他们在new子程序解释下的表对我来说没什么意义".
  2. 我真的不知道GET => $url声明中发生了什么.我的猜测是它正在分配一个值HTTP::Request或者LWP::UserAgent我找不到任何信息来支持这个想法.

amo*_*mon 6

给定的行相当于

$request = HTTP::Request->new(GET => $url);
Run Code Online (Sandbox Code Playgroud)

也可以写成

$request = HTTP::Request->new('GET', $url);
Run Code Online (Sandbox Code Playgroud)

该示例使用了间接方法语法.

CPAN文档中的HTTP::Request和之间的连接如下:LWP::UserAgent

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

$ua = LWP::UserAgent->new;
$response = $ua->request($request);
Run Code Online (Sandbox Code Playgroud)

因此,HTTP:.Request->new(...)创建一个可由用户代理执行的新请求

  • 您可以使用任何类或对象方法执行此操作.例如`request $ ua $ request;`可以用来代替`$ ua-> request($ request)`.大多数人只将它用于`new`(`new Class @ args`),因为他们喜欢假装他们正在使用C++或Java,以及出于历史原因的'print`(`print $ fh $ stuff`).假设他们完全使用它. (2认同)
  • 并且不建议使用间接方法语法,因为它可能导致解析歧义. (2认同)