我正在为需求编写我的第一个perl脚本
方案模式针对特定的web生成HTTP请求
使用HTTP::Request::use :UserAgent 'send_request';use Test::More;use use;use URI;use HTTP::Request::generate;use HTTP::Request::Common;use HTTP::UserAgent::use;my $g = generate_requests(方法=> 'POST',host => 'example.com','www.example.com',模式=> 'https://example.com/{bar,foo,gallery}/[00..99].html',包装=> sub { my( $req )= @_;# Fix up一些值$req->{headers } ->{'Content-Length'} = 666;};而( my $r =$g->(){ send_request( $r );};};
我在windows 10上使用atom编辑器和activeperl,运行上面的代码会出现以下错误。
Undefined subroutine &main::send_request called at C:\Users\ADMINI~1\AppData\Local\Temp\atom_script_tempfiles\0ac821e0-0886-11eb-9588-291dbc37d883 line 57.
我已经安装了所有必要的模块和库,但我认为它无法引用send_request方法。请协助。
注意:由于隐私原因,我已经替换了变量中的实值。
更新
我计划使用来自https://metacpan.org/pod/HTTP::Request::Generator的以下模块https://metacpan.org/pod/HTTP::Request::Generator。
发布于 2020-10-07 10:32:59
UserAgent是一个面向对象的模块.它不导出功能。你想这样称呼send_request:
my $ua = 'LWP::UserAgent'->new;
while ( my $r = $g->() ) {
$ua->send_request( $r );
}也就是说,send_request是一种无文档的内部方法。我认为它可能更适合于对LWP::UserAgent进行子类的人。您可能希望使用request方法。
my $ua = 'LWP::UserAgent'->new;
while ( my $r = $g->() ) {
my $response = $ua->request( $r );
}完整代码:
use strict;
use warnings;
use HTTP::Request::Generator 'generate_requests';
use LWP::UserAgent;
my $ua = 'LWP::UserAgent'->new;
my $gen = generate_requests(
method => 'POST',
host => [ 'example.com', 'www.example.com' ],
pattern => 'https://example.com/{bar,foo,gallery}/[00..99].html',
wrap => sub {
my ( $req ) = @_;
# Fix up some values
$req->{'headers'}{'Content-Length'} = 666;
},
);
while ( my $req = $gen->() ) {
my $response = $ua->request( $req );
# Do something with $response here?
}https://stackoverflow.com/questions/64241978
复制相似问题