在perl脚本中运行Curl命令

在perl脚本中运行Curl命令,perl,curl,Perl,Curl,在shell脚本中,当我想运行curl命令进行上传时,我只需执行以下操作: curl "http://website/event/collection" -H "Authorization:database IDhere-362ifd24-42jn422f-4214asf-ff424158ff" -d'{"time":"'"$epoch"'","event":{"Pr

在shell脚本中,当我想运行curl命令进行上传时,我只需执行以下操作:

curl "http://website/event/collection" -H "Authorization:database IDhere-362ifd24-42jn422f-4214asf-ff424158ff" -d'{"time":"'"$epoch"'","event":{"Project_code": "'"$pname"'"}}'
但是我想把我所有的代码从shell转换成perl。那么,您知道如何在perl脚本中运行这个$curl命令吗

$epoch = time();
my $pname;
printf "Enter project name: "
$pname = <STDIN>;
chomp $pname

curl "http://website/event/collection" -H "Authorization:database IDhere-362ifd24-42jn422f-4214asf-ff424158ff" -d'{"time":"'"$epoch"'","event":{"Project_code": "'"$pname"'"}}'
$epoch=time();
我的$pname;
printf“输入项目名称:”
$pname=;
chomp$pname
卷曲“http://website/event/collection“-H”授权:数据库IDhere-362ifd24-42jn422f-4214asf-ff424158ff“-d'{“时间”:“$epoch”,“事件”:{“项目代码”:““$pname””}”
我看到有人说(使用)可以生成代码,但我不确定这是否正确

#!perl
use strict;
use warnings;

use LWP::UserAgent;

my $ua = LWP::UserAgent->new( 'send_te' => '0' );
my $r  = HTTP::Request->new(
    'POST' => 'http://website/event/collection',
    [
        'Accept' => '*/*',
        'Authorization' =>
          'database IDhere-362ifd24-42jn422f-4214asf-ff424158ff',
        'Host'           => 'website:80',
        'User-Agent'     => 'curl/7.55.1',
        'Content-Length' => '52',
        'Content-Type'   => 'application/x-www-form-urlencoded'
    ],
"{\x22time\x22:\x22\x24epoch\x22,\x22event\x22:{\x22Project_code\x22: \x22\x24pname\x22}}"
);
my $res = $ua->request( $r, );



__END__

Created from curl command line
curl "http://website/event/collection" -H "Authorization:database IDhere-362ifd24-42jn422f-4214asf-ff424158ff" -d'{"time":"'"$epoch"'","event":{"Project_code": "'"$pname"'"}}'
更新: 取而代之的是,用这个,它对我很有用:

my $curl='curl whatevercodeshere'
我看到有人说(使用)可以生成代码,但我不确定这是不是正确的方法

#!perl
use strict;
use warnings;

use LWP::UserAgent;

my $ua = LWP::UserAgent->new( 'send_te' => '0' );
my $r  = HTTP::Request->new(
    'POST' => 'http://website/event/collection',
    [
        'Accept' => '*/*',
        'Authorization' =>
          'database IDhere-362ifd24-42jn422f-4214asf-ff424158ff',
        'Host'           => 'website:80',
        'User-Agent'     => 'curl/7.55.1',
        'Content-Length' => '52',
        'Content-Type'   => 'application/x-www-form-urlencoded'
    ],
"{\x22time\x22:\x22\x24epoch\x22,\x22event\x22:{\x22Project_code\x22: \x22\x24pname\x22}}"
);
my $res = $ua->request( $r, );



__END__

Created from curl command line
curl "http://website/event/collection" -H "Authorization:database IDhere-362ifd24-42jn422f-4214asf-ff424158ff" -d'{"time":"'"$epoch"'","event":{"Project_code": "'"$pname"'"}}'
更新: 取而代之的是,用这个,它对我很有用:

my $curl='curl whatevercodeshere'

我不这么认为,因为我一直想运行某个命令。也许是exec(“”?有趣的参考资料!可以通过阅读手册页并与docs@HelpMeAndroidStudio
$ua->request($r)
运行命令。
$ua
是使用
LWP::UserAgent
构建的用户代理(浏览器),而
HTTP::request
详细信息构建了随后提交的请求
$r
。虽然我不能确认细节,但这是可以检查的…@zdim我不能像运行普通linux命令一样运行curl注释吗?@HelpMeAndroidStudio在Perl程序中不能直接运行linux命令,但有一些工具可以将命令传递给系统或shell。最基本的是和“backticks”(也称为backticks),但最好使用库,比如
IPC::System::Simple
Capture::Tiny
IPC::Run
我不这么认为,因为我一直想运行某个命令。也许是exec(“”?有趣的参考资料!可以通过阅读手册页并与docs@HelpMeAndroidStudio
$ua->request($r)
运行命令。
$ua
是使用
LWP::UserAgent
构建的用户代理(浏览器),而
HTTP::request
详细信息构建了随后提交的请求
$r
。虽然我不能确认细节,但这是可以检查的…@zdim我不能像运行普通linux命令一样运行curl注释吗?@HelpMeAndroidStudio在Perl程序中不能直接运行linux命令,但有一些工具可以将命令传递给系统或shell。最基本的是和“backticks”(也称为),但最好使用库,如
IPC::System::Simple
Capture::Tiny
IPC::Run
参考答案的updatedRefer参考答案的更新