title: Is cgi->param using a uri_unescape by default?
body: <p>I use <code>$cgi-&gt;param('search_string');</code> to retrieve a url parameter in my Perl script but I suspect that the <code>$cgi-&gt;param</code> value is being passed through <code>uri_unescape()</code> function before I get it.</p>
  
  <p>Example:</p>
  
  <ol>
  <li>The form has a <code>search_string=ЛИКЕР ВИШНЕВЫЙ</code></li>
  <li>The url has a <code>search_string=%41B%418%41A%415%420+%412%418%428%41D%415%412%42B%419</code></li>
  <li>But the <code>$cgi-&gt;param('search_string')</code> returns <code>ABA8AAA5B0+A2A8B8ADA5A2BBA9</code> rather than <code>%41B%418%41A%415%420+%412%418%428%41D%415%412%42B%419</code> which I could simply decode.</li>
  </ol>
  
  <p>Here's what actually takes place in my code:</p>
  
  <p>I pass this "ПЛЕНКА ПИЩЕВАЯ" as the $search_string;</p>
  
  <pre><code>$search_string =~ s/\s/+/g;
  $search_string =~ s/\#/\%23/g;
  $search_string =~ s/[^A-Za-z0-9\+\*\.\@\_\-]/uc sprintf("%%%02x",ord($&amp;))/egx;
  </code></pre>
  
  <p>From that I get this <code>search_string=%41F%41B%415%41D%41A%410+%41F%418%429%415%412%410%42F</code> in the URL itself.</p>
  
  <p>Then when I use <code>$cgi-&gt;param('search_string')</code> to retrieve that value on the other end and I get this <code>"AFABA5ADAAA0 AFA8B9A5A2A0BF"</code>. The additional issue here is that it seems that $cgi->param('search_string') does call uri_unescape() automatically, that's why I get <code>"AFABA5ADAAA0 AFA8B9A5A2A0BF"</code>.</p>
  
  <p>How do I make it so that the end result comes back to me as <code>"ПЛЕНКА ПИЩЕВАЯ"</code>?</p>