This manual page is for Mac OS X version 10.6

If you are running a different version of Mac OS X, view the documentation locally:

  • In Terminal, using the man(1) command

Reading manual pages

Manual pages are intended as a quick reference for people who already understand a technology.

  • For more information about the manual page format, see the manual page for manpages(5).

  • For more information about this technology, look for other documentation in the Apple Reference Library.

  • For general information about writing shell scripts, read Shell Scripting Primer.



HTTP::Headers::Util(3)               User Contributed Perl Documentation              HTTP::Headers::Util(3)



NAME
       HTTP::Headers::Util - Header value parsing utility functions

SYNOPSIS
         use HTTP::Headers::Util qw(split_header_words);
         @values = split_header_words($h->header("Content-Type"));

DESCRIPTION
       This module provides a few functions that helps parsing and construction of valid HTTP header values.
       None of the functions are exported by default.

       The following functions are available:

       split_header_words( @header_values )
           This function will parse the header values given as argument into a list of anonymous arrays
           containing key/value pairs.  The function knows how to deal with ",", ";" and "=" as well as
           quoted values after "=".  A list of space separated tokens are parsed as if they were separated
           by ";".

           If the @header_values passed as argument contains multiple values, then they are treated as if
           they were a single value separated by comma ",".

           This means that this function is useful for parsing header fields that follow this syntax (BNF as
           from the HTTP/1.1 specification, but we relax the requirement for tokens).

             headers           = #header
             header            = (token | parameter) *( [";"] (token | parameter))

             token             = 1*<any CHAR except CTLs or separators>
             separators        = "(" | ")" | "<" | ">" | "@"
                               | "," | ";" | ":" | "\" | <">
                               | "/" | "[" | "]" | "?" | "="
                               | "{" | "}" | SP | HT

             quoted-string     = ( <"> *(qdtext | quoted-pair ) <"> )
             qdtext            = <any TEXT except <">>
             quoted-pair       = "\" CHAR

             parameter         = attribute "=" value
             attribute         = token
             value             = token | quoted-string

           Each header is represented by an anonymous array of key/value pairs.  The value for a simple
           token (not part of a parameter) is "undef".  Syntactically incorrect headers will not necessary
           be parsed as you would want.

           This is easier to describe with some examples:

              split_header_words('foo="bar"; port="80,81"; discard, bar=baz');
              split_header_words('text/html; charset="iso-8859-1"');
              split_header_words('Basic realm="\\"foo\\\\bar\\""');

           will return

              [foo=>'bar', port=>'80,81', discard=> undef], [bar=>'baz' ]
              ['text/html' => undef, charset => 'iso-8859-1']
              [Basic => undef, realm => "\"foo\\bar\""]

       join_header_words( @arrays )
           This will do the opposite of the conversion done by split_header_words().  It takes a list of
           anonymous arrays as arguments (or a list of key/value pairs) and produces a single header value.
           Attribute values are quoted if needed.

           Example:

              join_header_words(["text/plain" => undef, charset => "iso-8859/1"]);
              join_header_words("text/plain" => undef, charset => "iso-8859/1");

           will both return the string:

              text/plain; charset="iso-8859/1"

COPYRIGHT
       Copyright 1997-1998, Gisle Aas

       This library is free software; you can redistribute it and/or modify it under the same terms as Perl
       itself.



perl v5.10.0                                     2008-04-07                           HTTP::Headers::Util(3)

Reporting Problems

The way to report a problem with this manual page depends on the type of problem:

Content errors
Report errors in the content of this documentation to the Perl project. (See perlbug(1) for submission instructions.)
Bug reports
Report bugs in the functionality of the described tool or API to Apple through Bug Reporter and to the Perl project using perlbug(1).
Formatting problems
Report formatting mistakes in the online version of these pages with the feedback links below.