in reply to HTTP::Request

The header argument is only optional when the content is omitted. Fortunately, you can use undef for the header argument:

my $request = HTTP::Request->new(POST => 'http://...', undef, [ ... ])