理解此对象创建语句

时间:2012-07-31 15:16:44

标签: perl object

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

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

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

我对声明的newGET => $url部分感到困惑。

  1. 我认为我主要了解声明的new部分正在发生什么,但如果有人能解释HTTP::Request如何创建新的LWP::UserAgent有助于澄清这一点line(我在CPAN上查看了LWP :: UserAgent,但是他们在new子例程解释下的“KEY / DEFAULT”表对我来说没什么意义。)
  2. 我真的不知道声明的GET => $url部分发生了什么。我的猜测是它在HTTP::RequestLWP::UserAgent分配了一个值,但我找不到任何信息来支持这个想法。

1 个答案:

答案 0 :(得分:6)

给定的行等同于

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

也可以写成

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

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

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(...)创建了一个新的请求,可由用户代理执行