スレ違いなのはわかっていますが、最後に一つだけ教えてください。
とほほさんのコードで、もっともよく使うのは以下の部分です。

if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $query_string, $ENV{'CONTENT_LENGTH'});
} else {
$query_string = $ENV{'QUERY_STRING'};
}
@a = split(/&/, $query_string);
foreach $a (@a) {
($name, $value) = split(/=/, $a);
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
print "$name = $value\n";
$FORM{$name} = $value;
}

これが最悪とおっしゃる方々に質問です。
これを、最良の書き方をすればどうなりますか?

WebProg板で普通のコードが最悪とまで言われているのがいまだに理解できないのです。
「最悪」「反面教師」とまで言っておきながら、どこが悪いのか549以外は指摘しないし、
とほほさんを否定するばかりで、とほほさん以上のサイトを紹介してくれないですし。