⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util.html

📁 perl教程
💻 HTML
字号:
<?xml version="1.0" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<!-- saved from url=(0017)http://localhost/ -->
<script language="JavaScript" src="../../../displayToc.js"></script>
<script language="JavaScript" src="../../../tocParas.js"></script>
<script language="JavaScript" src="../../../tocTab.js"></script>
<link rel="stylesheet" type="text/css" href="../../../scineplex.css">
<title>HTTP::Headers::Util - Header value parsing utility functions</title>
<link rel="stylesheet" href="../../../Active.css" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:" />
</head>

<body>

<script>writelinks('__top__',3);</script>
<h1><a>HTTP::Headers::Util - Header value parsing utility functions</a></h1>
<p><a name="__index__"></a></p>

<!-- INDEX BEGIN -->

<ul>

	<li><a href="#name">NAME</a></li>
	<li><a href="#synopsis">SYNOPSIS</a></li>
	<li><a href="#description">DESCRIPTION</a></li>
	<li><a href="#copyright">COPYRIGHT</a></li>
</ul>
<!-- INDEX END -->

<hr />
<p>
</p>
<h1><a name="name">NAME</a></h1>
<p>HTTP::Headers::Util - Header value parsing utility functions</p>
<p>
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<pre>
  <span class="keyword">use</span> <span class="variable">HTTP::Headers::Util</span> <span class="string">qw(split_header_words)</span><span class="operator">;</span>
  <span class="variable">@values</span> <span class="operator">=</span> <span class="variable">split_header_words</span><span class="operator">(</span><span class="variable">$h</span><span class="operator">-&gt;</span><span class="variable">header</span><span class="operator">(</span><span class="string">"Content-Type"</span><span class="operator">));</span>
</pre>
<p>
</p>
<hr />
<h1><a name="description">DESCRIPTION</a></h1>
<p>This module provides a few functions that helps parsing and
construction of valid HTTP header values.  None of the functions are
exported by default.</p>
<p>The following functions are available:</p>
<dl>
<dt><strong><a name="item_split_header_words">split_header_words( @header_values )</a></strong>

<dd>
<p>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 &quot;,&quot;, &quot;;&quot; and &quot;=&quot; as well as quoted values after
&quot;=&quot;.  A list of space separated tokens are parsed as if they were
separated by &quot;;&quot;.</p>
</dd>
<dd>
<p>If the @header_values passed as argument contains multiple values,
then they are treated as if they were a single value separated by
comma &quot;,&quot;.</p>
</dd>
<dd>
<p>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).</p>
</dd>
<dd>
<pre>
  <span class="variable">headers</span>           <span class="operator">=</span> <span class="comment">#header</span>
  <span class="variable">header</span>            <span class="operator">=</span> <span class="operator">(</span><span class="variable">token</span> <span class="operator">|</span> <span class="variable">parameter</span><span class="operator">)</span> <span class="operator">*(</span> <span class="operator">[</span><span class="string">";"</span><span class="operator">]</span> <span class="operator">(</span><span class="variable">token</span> <span class="operator">|</span> <span class="variable">parameter</span><span class="operator">))</span>
</pre>
</dd>
<dd>
<pre>
  <span class="variable">token</span>             <span class="operator">=</span> <span class="number">1</span><span class="operator">*&lt;</span><span class="variable">any</span> <span class="variable">CHAR</span> <span class="variable">except</span> <span class="variable">CTLs</span> <span class="keyword">or</span> <span class="variable">separators</span><span class="operator">&gt;</span>
  <span class="variable">separators</span>        <span class="operator">=</span> <span class="string">"("</span> <span class="operator">|</span> <span class="string">")"</span> <span class="operator">|</span> <span class="string">"&lt;"</span> <span class="operator">|</span> <span class="string">"&gt;"</span> <span class="operator">|</span> <span class="string">"@"</span>
                    <span class="operator">|</span> <span class="string">","</span> <span class="operator">|</span> <span class="string">";"</span> <span class="operator">|</span> <span class="string">":"</span> <span class="operator">|</span> <span class="string">"\" | &lt;"</span><span class="operator">&gt;</span>
                    <span class="operator">|</span> <span class="string">"/"</span> <span class="operator">|</span> <span class="string">"["</span> <span class="operator">|</span> <span class="string">"]"</span> <span class="operator">|</span> <span class="string">"?"</span> <span class="operator">|</span> <span class="string">"="</span>
                    <span class="operator">|</span> <span class="string">"{"</span> <span class="operator">|</span> <span class="string">"}"</span> <span class="operator">|</span> <span class="variable">SP</span> <span class="operator">|</span> <span class="variable">HT</span>
</pre>
</dd>
<dd>
<pre>
  quoted-string     = ( &lt;&quot;&gt; *(qdtext | quoted-pair ) &lt;&quot;&gt; )
  qdtext            = &lt;any TEXT except &lt;&quot;&gt;&gt;
  quoted-pair       = &quot;\&quot; CHAR</pre>
</dd>
<dd>
<pre>
  parameter         = attribute &quot;=&quot; value
  attribute         = token
  value             = token | quoted-string</pre>
</dd>
<dd>
<p>Each <em>header</em> is represented by an anonymous array of key/value
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>.
Syntactically incorrect headers will not necessary be parsed as you
would want.</p>
</dd>
<dd>
<p>This is easier to describe with some examples:</p>
</dd>
<dd>
<pre>
   <span class="variable">split_header_words</span><span class="operator">(</span><span class="string">'foo="bar"; port="80,81"; discard, bar=baz'</span><span class="operator">);</span>
   <span class="variable">split_header_words</span><span class="operator">(</span><span class="string">'text/html; charset="iso-8859-1"'</span><span class="operator">);</span>
   <span class="variable">split_header_words</span><span class="operator">(</span><span class="string">'Basic realm="\\"foo\\\\bar\\""'</span><span class="operator">);</span>
</pre>
</dd>
<dd>
<p>will return</p>
</dd>
<dd>
<pre>
   [foo=&gt;'bar', port=&gt;'80,81', discard=&gt; undef], [bar=&gt;'baz' ]
   ['text/html' =&gt; undef, charset =&gt; 'iso-8859-1']
   [Basic =&gt; undef, realm =&gt; &quot;\&quot;foo\\bar\&quot;&quot;]</pre>
</dd>
</li>
<dt><strong><a name="item_join_header_words">join_header_words( @arrays )</a></strong>

<dd>
<p>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.</p>
</dd>
<dd>
<p>Example:</p>
</dd>
<dd>
<pre>
   <span class="variable">join_header_words</span><span class="operator">(</span><span class="operator">[</span><span class="string">"text/plain"</span> <span class="operator">=&gt;</span> <span class="keyword">undef</span><span class="operator">,</span> <span class="string">charset</span> <span class="operator">=&gt;</span> <span class="string">"iso-8859/1"</span><span class="operator">]</span><span class="operator">);</span>
   <span class="variable">join_header_words</span><span class="operator">(</span><span class="string">"text/plain"</span> <span class="operator">=&gt;</span> <span class="keyword">undef</span><span class="operator">,</span> <span class="string">charset</span> <span class="operator">=&gt;</span> <span class="string">"iso-8859/1"</span><span class="operator">);</span>
</pre>
</dd>
<dd>
<p>will both return the string:</p>
</dd>
<dd>
<pre>
   <span class="variable">text</span><span class="operator">/</span><span class="variable">plain</span><span class="operator">;</span> <span class="variable">charset</span><span class="operator">=</span><span class="string">"iso-8859/1"</span>
</pre>
</dd>
</li>
</dl>
<p>
</p>
<hr />
<h1><a name="copyright">COPYRIGHT</a></h1>
<p>Copyright 1997-1998, Gisle Aas</p>
<p>This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.</p>

</body>

</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -