Just a minor nitpick.
Instead of
my%i = map {$_ => param($_)} param; you could use the CGI.pm prepared function
Vars
my %i = Vars;Of course this would require some changing of your call to CGI.pm:
use CGI qw/param Vars header url/;Credit of this reply goes to all those folks at node_id #
94303
$_.=($=+(6<<1));print(chr(my$a=$_));$^H=$_+$_;$_=$^H;
print chr($_-39); # Easy but its ok.