NAME
Fetch::Headers - ordered, case-insensitive, multi-valued HTTP headers
SYNOPSIS
my $h = $res->headers; # a Fetch::Headers
my $ct = $h->get('content-type'); # first value, case-insensitive
my @sc = $h->get_all('set-cookie'); # every value, in order
my $req = Fetch::Headers->new(Accept => 'application/json');
$req->add('X-Trace' => 'a');
$req->add('X-Trace' => 'b'); # repeatable header kept twice
# still behaves as the old [k, v, k, v, ...] arrayref
my @flat = @$h;
DESCRIPTION
A small container for HTTP header fields. Field names compare case-insensitively; insertion order and duplicate names are preserved (so Set-Cookie and other repeatable fields survive intact). The object is a blessed arrayref of a flat name => value list, so code that treated $res->headers as a [k, v, ...] arrayref keeps working.
METHODS
new(%pairs | \@pairs | \%hash | $headers)
Build from a flat name/value list, an arrayref of pairs, a hashref, or another Fetch::Headers.
get($name) / get_all($name)
The first value for $name, or every value in order.
set($name, @values) / add($name, $value) / remove($name)
Replace, append, or delete a field.
exists($name) / names / pairs / clone
Membership test; the distinct field names in order; the flat name/value list; a shallow copy.
merge($other)
Overlay another header set: each name it carries replaces this object's values for that name.
AUTHOR
LNATION <email@lnation.org>
LICENSE AND COPYRIGHT
This software is Copyright (c) 2026 by LNATION. This is free software, licensed under the Artistic License 2.0.