首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用“原子”运行perl代码会抛出未定义的子例程&main::send_request

使用“原子”运行perl代码会抛出未定义的子例程&main::send_request
EN

Stack Overflow用户
提问于 2020-10-07 10:17:09
回答 1查看 77关注 0票数 1

我正在为需求编写我的第一个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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-07 10:32:59

UserAgent是一个面向对象的模块.它不导出功能。你想这样称呼send_request

代码语言:javascript
复制
my $ua = 'LWP::UserAgent'->new;

while ( my $r = $g->() ) {
    $ua->send_request( $r );
}

也就是说,send_request是一种无文档的内部方法。我认为它可能更适合于对LWP::UserAgent进行子类的人。您可能希望使用request方法。

代码语言:javascript
复制
my $ua = 'LWP::UserAgent'->new;

while ( my $r = $g->() ) {
    my $response = $ua->request( $r );
}

完整代码:

代码语言:javascript
复制
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?
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64241978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档