Perl LWP getstore使用情况

Perl LWP getstore使用情况,perl,lwp,Perl,Lwp,我对Perl非常陌生。而我只是创建了一个简单的脚本来检索文件 getstore($url,$file) 但是如何知道任务是正确完成的还是中间中断的连接,或者认证失败,或者是什么响应。我搜索了所有的网页,发现了一些,比如,和一些关于用户代理的东西,我完全不理解,尤其是运营商$ua-> 我想要解释的是关于操作符的东西(我甚至不知道->用于什么),以及RC代码的含义,最后是如何使用它 这里面有很多东西,所以我很感激给出的任何答案,哪怕只是部分答案。首先感谢愿意帮忙的人。=) LWP::Simple模块

我对Perl非常陌生。而我只是创建了一个简单的脚本来检索文件
getstore($url,$file)
但是如何知道任务是正确完成的还是中间中断的连接,或者认证失败,或者是什么响应。我搜索了所有的网页,发现了一些,比如,和一些关于用户代理的东西,我完全不理解,尤其是运营商
$ua->

我想要解释的是关于操作符的东西(我甚至不知道
->
用于什么),以及RC代码的含义,最后是如何使用它

这里面有很多东西,所以我很感激给出的任何答案,哪怕只是部分答案。首先感谢愿意帮忙的人。=)

LWP::Simple
模块就是这样:非常简单化。文档说明
getstore
函数返回HTTP状态代码,我们可以将其保存到变量中。还有
is_success
is_error
函数,它们告诉我们某个返回值是否正常

my $url      = "http://www.example.com/";
my $filename = "some-file.html";
my $rc = getstore($url, $filename)
if (is_error($rc)) {
  die "getstore of <$url> failed with $rc";
}
将使用
@args
调用
$object
上的
方法。我们还可以对类名调用方法。要创建新对象,通常对类名使用
new
方法:

my $object = The::Class->new();
方法与函数类似,只是将其留给对象的类来确定将调用哪个函数

使用
LWP::UserAgent
的正常工作流如下所示:

use LWP::UserAgent; # load the class

my $ua = LWP::UserAgent->new();
我们还可以为
new
方法提供命名参数。因为这些UA对象是机器人,所以告诉每个发送此机器人的人被认为是很有礼貌的。我们可以使用
from
字段执行此操作:

my $ua = LWP::UserAgent->new(
  from => 'ss-tangerine@example.com',
);
我们还可以将
超时时间从默认的三分钟更改为
。在构造新的
$ua
之后,也可以设置这些选项,以便

$ua->timeout(30);  # half a minute
$ua
具有用于所有HTTP请求的方法,如
get
post
。要复制
getstore
的行为,我们首先必须
获取我们感兴趣的URL:

my $url = "http://www.example.com/";

my $response = $ua->get($url);
$response
也是一个对象,我们可以询问它是否成功:

$response->is_success or die $response->status_line;
所以,如果执行过程经过了这个语句,一切都会顺利进行。我们现在可以访问请求的内容。注意:使用
decoded_content
方法,因为这为我们管理传输编码:

my $content = $response->decoded_content;
现在,我们可以将其打印到文件中:

use autodie; # automatic error handling
open my $fh, ">", "some-file.html";
print {$fh} $content;
(在Windows上处理二进制文件时:
binmode$fh
打开文件后,或使用
“>:raw”
打开模式)

完成了


要了解有关LWP::UserAgent的信息,请阅读。要了解对象,请阅读。您也可以访问on SO以获得一些书籍建议。

LWP::Simple模块就是这样:非常简单。文档说明
getstore
函数返回HTTP状态代码,我们可以将其保存到变量中。还有
is_success
is_error
函数,它们告诉我们某个返回值是否正常

my $url      = "http://www.example.com/";
my $filename = "some-file.html";
my $rc = getstore($url, $filename)
if (is_error($rc)) {
  die "getstore of <$url> failed with $rc";
}
将使用
@args
调用
$object
上的
方法。我们还可以对类名调用方法。要创建新对象,通常对类名使用
new
方法:

my $object = The::Class->new();
方法与函数类似,只是将其留给对象的类来确定将调用哪个函数

使用
LWP::UserAgent
的正常工作流如下所示:

use LWP::UserAgent; # load the class

my $ua = LWP::UserAgent->new();
我们还可以为
new
方法提供命名参数。因为这些UA对象是机器人,所以告诉每个发送此机器人的人被认为是很有礼貌的。我们可以使用
from
字段执行此操作:

my $ua = LWP::UserAgent->new(
  from => 'ss-tangerine@example.com',
);
我们还可以将
超时时间从默认的三分钟更改为
。在构造新的
$ua
之后,也可以设置这些选项,以便

$ua->timeout(30);  # half a minute
$ua
具有用于所有HTTP请求的方法,如
get
post
。要复制
getstore
的行为,我们首先必须
获取我们感兴趣的URL:

my $url = "http://www.example.com/";

my $response = $ua->get($url);
$response
也是一个对象,我们可以询问它是否成功:

$response->is_success or die $response->status_line;
所以,如果执行过程经过了这个语句,一切都会顺利进行。我们现在可以访问请求的内容。注意:使用
decoded_content
方法,因为这为我们管理传输编码:

my $content = $response->decoded_content;
现在,我们可以将其打印到文件中:

use autodie; # automatic error handling
open my $fh, ">", "some-file.html";
print {$fh} $content;
(在Windows上处理二进制文件时:
binmode$fh
打开文件后,或使用
“>:raw”
打开模式)

完成了


要了解有关LWP::UserAgent的信息,请阅读。要了解对象,请阅读。您也可以访问on SO以获得一些书籍建议。

文档中说“返回值是HTTP响应代码。”——-因此您可以检查一下?$o->m”基本上是对象“o”上的调用方法“m”。与某些语言中的“.”类似。文档中说“返回值是HTTP响应代码。”——-所以您可以检查一下?$o->m”基本上是对象“o”上的调用方法“m”。在某些语言中类似于“.”。太好了,谢谢你的辛勤工作。我将继续研究UserAgent,因为我实际上误解它是Perl默认函数而不是类。编辑:
是否应使用autodie放在源代码的开头?它实际上处理什么?@SSTangerine每个脚本都应该以
使用strict开头;使用警告;使用自动模具
strict
会中止编译,例如忘记声明变量时。当您执行可疑操作(如打印未初始化的变量)时,
warnings
会发出警告消息。
autodie
open
print
等内置函数替换为在出现错误时引发致命异常的版本