home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _8752656a0dd89408ff652f6c1fb5dc59 < prev    next >
Text File  |  2000-03-23  |  5KB  |  128 lines

  1.  
  2. <HTML>
  3. <HEAD>
  4. <TITLE>HTTP::Headers::Util - Header value parsing utility functions</TITLE>
  5. <LINK REL="stylesheet" HREF="../../../../Active.css" TYPE="text/css">
  6. <LINK REV="made" HREF="mailto:">
  7. </HEAD>
  8.  
  9. <BODY>
  10. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  11. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  12. <STRONG><P CLASS=block> HTTP::Headers::Util - Header value parsing utility functions</P></STRONG>
  13. </TD></TR>
  14. </TABLE>
  15.  
  16. <A NAME="__index__"></A>
  17. <!-- INDEX BEGIN -->
  18.  
  19. <UL>
  20.  
  21.     <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
  22.  
  23.     <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
  24.     <LI><A HREF="#description">DESCRIPTION</A></LI>
  25.     <LI><A HREF="#copyright">COPYRIGHT</A></LI>
  26. </UL>
  27. <!-- INDEX END -->
  28.  
  29. <HR>
  30. <P>
  31. <H1><A NAME="name">NAME</A></H1>
  32. <P>HTTP::Headers::Util - Header value parsing utility functions</P>
  33. <P>
  34. <HR>
  35. <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
  36. <UL>
  37. <LI>Linux</LI>
  38. <LI>Solaris</LI>
  39. <LI>Windows</LI>
  40. </UL>
  41. <HR>
  42. <H1><A NAME="synopsis">SYNOPSIS</A></H1>
  43. <PRE>
  44.   use HTTP::Headers::Util qw(split_header_words);
  45.   @values = split_header_words($h->header("Content-Type"));</PRE>
  46. <P>
  47. <HR>
  48. <H1><A NAME="description">DESCRIPTION</A></H1>
  49. <P>This module provides a few functions that helps parsing and
  50. construction of valid HTTP header values.  None of the functions are
  51. exported by default.</P>
  52. <P>The following functions are available:</P>
  53. <DL>
  54. <DT><STRONG><A NAME="item_split_header_words">split_header_words( @header_values )</A></STRONG><BR>
  55. <DD>
  56. This function will parse the header values given as argument into a
  57. list of anonymous arrays containing key/value pairs.  The function
  58. knows how to deal with ``,'', ``;'' and ``='' as well as quoted values after
  59. ``=''.  A list of space separated tokens are parsed as if they were
  60. separated by ``;''.
  61. <P>If the @header_values passed as argument contains multiple values,
  62. then they are treated as if they were a single value separated by
  63. comma ``,''.</P>
  64. <P>This means that this function is useful for parsing header fields that
  65. follow this syntax (BNF as from the HTTP/1.1 specification, but we relax
  66. the requirement for tokens).</P>
  67. <PRE>
  68.   headers           = #header
  69.   header            = (token | parameter) *( [";"] (token | parameter))</PRE>
  70. <PRE>
  71.   token             = 1*<any CHAR except CTLs or separators>
  72.   separators        = "(" | ")" | "<" | ">" | "@"
  73.                     | "," | ";" | ":" | "\" | <">
  74.                     | "/" | "[" | "]" | "?" | "="
  75.                     | "{" | "}" | SP | HT</PRE>
  76. <PRE>
  77.   quoted-string     = ( <"> *(qdtext | quoted-pair ) <"> )
  78.   qdtext            = <any TEXT except <">>
  79.   quoted-pair       = "\" CHAR</PRE>
  80. <PRE>
  81.   parameter         = attribute "=" value
  82.   attribute         = token
  83.   value             = token | quoted-string</PRE>
  84. <P>Each <EM>header</EM> is represented by an anonymous array of key/value
  85. pairs.  The value for a simple token (not part of a parameter) is <A HREF="../../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A>.
  86. Syntactically incorrect headers will not necessary be parsed as you
  87. would want.</P>
  88. <P>This is easier to describe with some examples:</P>
  89. <PRE>
  90.    split_header_words('foo="bar"; port="80,81"; discard, bar=baz')
  91.    split_header_words('text/html; charset="iso-8859-1");
  92.    split_header_words('Basic realm="\"foo\\bar\""');</PRE>
  93. <P>will return</P>
  94. <PRE>
  95.    [foo=>'bar', port=>'80,81', discard=> undef], [bar=>'baz' ]
  96.    ['text/html' => undef, charset => 'iso-8859-1']
  97.    [Basic => undef, realm => '"foo\bar"']</PRE>
  98. <P></P>
  99. <DT><STRONG><A NAME="item_join_header_words">join_header_words( @arrays )</A></STRONG><BR>
  100. <DD>
  101. This will do the opposite of the conversion done by split_header_words().
  102. It takes a list of anonymous arrays as arguments (or a list of
  103. key/value pairs) and produces a single header value.  Attribute values
  104. are quoted if needed.
  105. <P>Example:</P>
  106. <PRE>
  107.    join_header_words(["text/plain" => undef, charset => "iso-8859/1"]);
  108.    join_header_words(""text/plain" => undef, charset => "iso-8859/1");</PRE>
  109. <P>will both return the string:</P>
  110. <PRE>
  111.    text/plain; charset="iso-8859/1"</PRE>
  112. <P></P></DL>
  113. <P>
  114. <HR>
  115. <H1><A NAME="copyright">COPYRIGHT</A></H1>
  116. <P>Copyright 1997-1998, Gisle Aas</P>
  117. <P>This library is free software; you can redistribute it and/or
  118. modify it under the same terms as Perl itself.</P>
  119. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  120. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  121. <STRONG><P CLASS=block> HTTP::Headers::Util - Header value parsing utility functions</P></STRONG>
  122. </TD></TR>
  123. </TABLE>
  124.  
  125. </BODY>
  126.  
  127. </HTML>
  128.