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