---
name: "HTTP::Config"
section: "3pm"
platform: "linux"
package: "perl-http-message"
version: "7.04-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/HTTP::Config"
---

# HTTP::Config(3pm)

## SYNOPSIS

```
 use HTTP::Config;
 my $c = HTTP::Config->new;
 $c->add(m_domain => ".example.com", m_scheme => "http", verbose => 1);

 use HTTP::Request;
 my $request = HTTP::Request->new(GET => "http://www.example.com");

 if (my @m = $c->matching($request)) {
    print "Yadayada\n" if $m[0]->{verbose};
 }
```

## DESCRIPTION

An `"HTTP::Config"` object is a list of entries that can be matched against request or request/response pairs.  Its purpose is to hold configuration data that can be looked up given a request or response object.

Each configuration entry is a hash.  Some keys specify matching to occur against attributes of request/response objects.  Other keys can be used to hold user data.

The following methods are provided:

- $conf = HTTP::Config-\>new

  Constructs a new empty `"HTTP::Config"` object and returns it.

- $conf-\>entries

  Returns the list of entries in the configuration object. In scalar context returns the number of entries.

- $conf-\>empty

  Return true if there are no entries in the configuration object. This is just a shorthand for `"not $conf->entries"`.

- $conf-\>add( %matchspec, %other )

  - $conf-\>add( \\%entry )

  Adds a new entry to the configuration. You can either pass separate key/value pairs or a hash reference.

- $conf-\>remove( %spec )

  Removes (and returns) the entries that have matches for all the key/value pairs in `%spec`. If `%spec` is empty this will match all entries; so it will empty the configuration object.

- $conf-\>matching( $uri, $request, $response )

  - $conf-\>matching( $uri )

  - $conf-\>matching( $request )

  - $conf-\>matching( $response )

  Returns the entries that match the given `$uri`, `$request` and `$response` triplet.

  If called with a single `$request` object then the `$uri` is obtained by calling its 'uri\_canonical' method. If called with a single `$response` object, then the request object is obtained by calling its 'request' method; and then the `$uri` is obtained as if a single `$request` was provided.

  The entries are returned with the most specific matches first. In scalar context returns the most specific match or `"undef"` in none match.

- $conf-\>add\_item( $item, %matchspec )

  - $conf-\>remove\_items( %spec )

  - $conf-\>matching\_items( $uri, $request, $response )

  Wrappers that hides the entries themselves.

### Matching

The following keys on a configuration entry specify matching.  For all of these you can provide an array of values instead of a single value. The entry matches if at least one of the values in the array matches.

Entries that require match against a response object attribute will never match unless a response object was provided.

- m\_scheme =\> $scheme

  Matches if the URI uses the specified scheme; e.g. "http".

- m\_secure =\> $bool

  If `$bool` is TRUE; matches if the URI uses a secure scheme.  If `$bool` is FALSE; matches if the URI does not use a secure scheme.  An example of a secure scheme is "https".

- m\_host\_port =\> "$hostname:$port"

  Matches if the URI's host\_port method return the specified value.

- m\_host =\> $hostname

  Matches if the URI's host method returns the specified value.

- m\_port =\> $port

  Matches if the URI's port method returns the specified value.

- m\_domain =\> ".$domain"

  Matches if the URI's host method return a value that within the given domain.  The hostname "www.example.com" will for instance match the domain ".com".

- m\_path =\> $path

  Matches if the URI's path method returns the specified value.

- m\_path\_prefix =\> $path

  Matches if the URI's path is the specified path or has the specified path as prefix.

- m\_path\_match =\> $Regexp

  Matches if the regular expression matches the URI's path.  Eg. qr/\\.html$/.

- m\_method =\> $method

  Matches if the request method matches the specified value. Eg. "GET" or "POST".

- m\_code =\> $digit

  - m\_code =\> $status\_code

  Matches if the response status code matches.  If a single digit is specified; matches for all response status codes beginning with that digit.

- m\_proxy =\> $url

  Matches if the request is to be sent to the given Proxy server.

- m\_media\_type =\> "\*/\*"

  - m\_media\_type =\> "text/\*"

  - m\_media\_type =\> "html"

  - m\_media\_type =\> "xhtml"

  - m\_media\_type =\> "text/html"

  Matches if the response media type matches.

  With a value of "html" matches if `$response`-\>content\_is\_html returns TRUE. With a value of "xhtml" matches if `$response`-\>content\_is\_xhtml returns TRUE.

- m\_uri\_\_*$method* =\> undef

  Matches if the URI object provides the method.

- m\_uri\_\_*$method* =\> $string

  Matches if the URI's `$method` method returns the given value.

- m\_header\_\_*$field* =\> $string

  Matches if either the request or the response have a header `$field` with the given value.

- m\_response\_attr\_\_*$key* =\> undef

  - m\_response\_attr\_\_*$key* =\> $string

  Matches if the response object has that key, or the entry has the given value.

## SEE ALSO

URI, HTTP::Request, HTTP::Response
