本当に皆さんご親切に有難うございます。
ソースを載せますと

my (%form, $buffer, @pairs);

if ($ENV{'REQUEST_METHOD'} =~ /^post$/i){ read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else{ $buffer = $ENV{'QUERY_STRING'}; }
@pairs = split(/&/,$buffer);
foreach (@pairs){
my ($key,$value) = split(/=/,$_);
$value =~ tr/+/ /;
$key =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("C", hex($1))/eg;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$form{$key} = jcode::convert(\$value,'euc', 'euc','z');
}

このようにformで受け取ったものを%formに入れているのですが、
ここで問題の「当代島」の入っている$form{address}を表示させる
と例の文字化けが発生してしまいました。
スクリプト内で「当」がきたらエスケープする処理をしてもよいの
ですが、もう少し効率的な方法を考えたいと思います。

こんな駄目質問にも応えていただいた皆様には本当に感謝しており
ます。