You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl调用curl执行PUT请求返回411 Content Length错误求助

核心原因

你遇到的411错误最根本的原因是Perl反引号内的特殊符号没有转义:
@在Perl中是数组的标识符,你写的-d @output.json会被Perl优先解析为数组@output插值拼接.json,如果你的Perl代码中没有定义过@output数组,最终传递给curl的参数会变成-d .json,请求体内容完全不符合预期,curl无法计算正确的Content-Length,触发Azure API的411错误。
另外你贴出的Perl代码末尾错误使用单引号闭合反引号,也会导致命令解析异常。

修复方案

方案1:直接修正反引号写法(最简单)

对@符号添加反斜杠转义,同时修正命令闭合符号,示例代码如下:

# 注意@前加\转义,末尾用反引号闭合而不是单引号
$lb_update = `curl -H "Content-Type:application/json" -H "Authorization: Bearer $authtoken" -X PUT "https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group>/providers/Microsoft.Network/loadBalancers/<load-balancer>?api-version=$apiversion" -d \@output.json`;

如果$authtoken和$apiversion是bash环境变量而非Perl变量,还需要对$符号也进行转义,写成\$authtoken和\$apiversion,避免被Perl提前解析为空值。

方案2:用列表形式调用curl(避免转义问题)

如果你不想处理复杂的转义规则,可以用列表形式执行命令,完全规避Perl插值和shell解析的干扰,推荐用IPC::System::Simple模块的capture方法:

use IPC::System::Simple qw(capture);

$lb_update = capture(
    'curl',
    '-H', 'Content-Type:application/json',
    '-H', "Authorization: Bearer $authtoken",
    '-X', 'PUT',
    "https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group>/providers/Microsoft.Network/loadBalancers/<load-balancer>?api-version=$apiversion",
    '-d', '@output.json'
);

方案3:改用Perl原生HTTP客户端(更稳定)

如果不想依赖系统的curl命令,可以用Perl原生的HTTP客户端模块发起请求,可控性更高:

use LWP::UserAgent;

# 读取本地json文件内容
open my $fh, '<', 'output.json' or die "读取output.json失败: $!";
my $req_body = do { local $/; <$fh> };
close $fh;

my $ua = LWP::UserAgent->new;
my $resp = $ua->put(
    "https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group>/providers/Microsoft.Network/loadBalancers/<load-balancer>?api-version=$apiversion",
    'Content-Type' => 'application/json',
    'Authorization' => "Bearer $authtoken",
    Content => $req_body
);

if ($resp->is_success) {
    $lb_update = $resp->decoded_content;
} else {
    die "请求失败: " . $resp->status_line;
}

内容的提问来源于stack exchange,提问作者jay patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:39:00