我是perl的新手,任何帮助都将受到赞赏!!
我必须通过perl调用一些URL(在unix机器上).URLs是http和https
如果成功调用了URL,那么就可以创建一个日志文件,说明无法调用URL。
对于调用URL,我打算用于例如。
exec 'firefox http://www.yahoo.com';
但是如何获取http和https请求状态代码?如果状态是200,那么确定其他错误..
请帮助!!
答案 0 :(得分:4)
您应该使用HTTP客户端库,例如HTTP::Tiny或LWP::UserAgent,而不是使用像Firefox这样的浏览器。
例如:
#!/usr/bin/env perl
use strict;
use warnings;
use feature 'say';
use HTTP::Tiny;
my $Client = HTTP::Tiny->new();
my @urls = (
'http://www.yahoo.com',
'https://www.google.com',
'http://nosuchsiteexists.com',
);
for my $url (@urls) {
my $response = $Client->get($url);
say $url, ": ", $response->{status};
}
哪个输出:
alex@yuzu:~$ ./return_status.pl
http://www.yahoo.com: 200
https://www.google.com: 200
http://nosuchsiteexists.com: 599
如果要正确识别重定向状态代码(3XX),则必须将max_redirect
参数设置为0.
alex@yuzu:~$ perl -MHTTP::Tiny -E 'say HTTP::Tiny->new(max_redirect => 0)->get("http://www.nestoria.co.uk/soho")->{status};'
301
如果您关心的只是成功,那么响应hashref包含成功'这个领域在成功时是真实的,在失败时是假的。
alex@yuzu:~$ perl -MHTTP::Tiny -E 'say HTTP::Tiny->new()->get("http://www.google.com")->{success};'
1