109
118
computes the same number as the System V sum program:</p>
110
119
<pre class="verbatim"> <span class="i">$checksum</span> = <a class="l_k" href="../functions/do.html">do</a> <span class="s">{</span>
111
120
<a class="l_k" href="../functions/local.html">local</a> <span class="i">$/</span><span class="sc">;</span> <span class="c"># slurp!</span>
112
<a class="l_k" href="../functions/unpack.html">unpack</a><span class="s">(</span><span class="q">"%32C*"</span><span class="cm">,</span><><span class="s">)</span> % <span class="n">65535</span><span class="sc">;</span>
121
<a class="l_k" href="../functions/unpack.html">unpack</a><span class="s">(</span><span class="q">"%32W*"</span><span class="cm">,</span><><span class="s">)</span> % <span class="n">65535</span><span class="sc">;</span>
113
122
<span class="s">}</span><span class="sc">;</span></pre>
114
123
<p>The following efficiently counts the number of set bits in a bit vector:</p>
115
124
<pre class="verbatim"> <span class="i">$setbits</span> = <a class="l_k" href="../functions/unpack.html">unpack</a><span class="s">(</span><span class="q">"%32b*"</span><span class="cm">,</span> <span class="i">$selectmask</span><span class="s">)</span><span class="sc">;</span></pre>
118
127
formats should be used with care. Since Perl
119
128
has no way of checking whether the value passed to <code class="inline"><a class="l_k" href="../functions/unpack.html">unpack()</a></code>
120
129
corresponds to a valid memory location, passing a pointer value that's