フォームから送られてくるデータって
%83%7E%83P%83l%83R
みたいになってますが、これは何エンコードなのでしょうか?
同じ形式でエンコードしたいのですが

$str =~ s/(\W)/'%' . unpack('H2', $1)/eg;
$str =~ tr/ /+/;

では同じ形式にはならないです。(URIエンコードで調べて見つけたサイトに乗ってたコードです)

ちなみに
$value = '%83%7E%83P%83l%83R';
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;
print $value;
>ミケネコ
です。