雨谷の日和

過去19年で2,600を超えるアニメの第1話だけは見続けた僕のお勧めアニメがハズレなはずがない

人狼BBS作成日記34

ということで、今までのを合体させて、サブルーチンにするとこんな感じ?

sub STDIN_QUERY_STRING {
  if( $ENV{'REQUEST_METHOD'} eq "POST" ){
    read( STDIN, $query, $ENV{'CONTENT_LENGTH'} );
  }else{
    $query = $ENV{'QUERY_STRING'};
  }
  @pairs = split( /&/, $query );
  foreach $pair (@pairs) {
    local($name, $value) = split(/=/, $pair);
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/ge;
    &jcode'convert(*value,'euc');
    $value =~ s/\r\n/\n/g;
    $value =~ s/\r|\n/\n/g;
    $value =~ s/</&lt;/g;
    $value =~ s/>/&gt;/g;
    $value =~ s/\"/&quot;/g;
    $Query_Tbl{ $name } = $value;
  }
}

これをログファイルの読み込みの前に実行して、入力されたパラメータをQuery_Tblに格納すれば良いと。あとは取り出して使うだけ。
それにしても、最近はCGI.pm(esper氏、ご指導多謝)やらEncode(Nazo9x氏、ご指導多謝)やら、便利なものが充実してますね。そのうち勉強し直して書き換えをしてみたいとは思ってます。
ただまあ、最初はとりあえず一通りの処理を従来のゴリゴリスタイルで書き下してみてから、仕様を整理する方法で進めてみたいと思います。今後ともどうぞよろしくです。