クエリーストリングを、%inに入れたとして、以下のコードを実行すると、

sub htmlspecialchars{
  #PHPの同名関数と同じ動きをします。
  my ($letter) = $_[0];
  $letter =~ s/&/&/g;
  $letter =~ s/"/"/g;
  $letter =~ s/'/?/g;
  $letter =~ s/</</g;
  $letter =~ s/>/>/g;
  return $letter;
}

foreach $key (keys %in){
  &jcode::convert(\$in{$key}, "sjis");
  print qq|<input type="hidden" name="$key" value="|. &htmlspecialchars(\$in{$key}) .qq|">\n|;
}
<input type="hidden" name="country" value="SCALAR(0x827cdbc)">
<input type="hidden" name="gender" value="SCALAR(0x827cd2c)">
となってしまうのですが、どこがいけないのでしょうか・・・?