如何在perl脚本中将变量传递给curl命令?

时间:2015-12-15 06:53:03

标签: json perl curl

我正在尝试在Perl脚本中将变量传递给curl命令。但它失败了。

但是当我从命令提示符运行相同的curl命令时,它正在运行。

my $id=3;

system('curl -D- -u username:password -X PUT --data {\"fields\":{\"priority\":{\"id\":\"${id}\"}}} -H "Content-Type: application/json" -k https:request);

当我执行上面的Perl脚本时,我收到如下错误。

{"errorMessages":[],"errors":{"priority":"The priority selected is invalid."}}after curl command 

当我从命令提示符运行上面的命令时,将id替换为值,它正在传递。

'curl -D- -u username:password -X PUT --data {\"fields\":{\"priority\":{\"id\":\"3 \"}}} -H "Content-Type: application/json" -k https:request

请在这里帮助我,让我知道我的代码有什么问题。

1 个答案:

答案 0 :(得分:1)

您将命令放在单引号内。并且perl将其视为单引号内部。当您使用命令传递$id变量时,我建议您使用双引号。例如

system("curl ... $id... -k https:request");
       ^ double quote                   ^

或者你可以通过使用连接来这样做。

system('curl -D- -u ...' . $id . '... -k https:request');
                          ------ concatenation