アットウィキロゴ

sub read_data(){

  if ($ENV{'REQUEST_METHOD'} eq "POST") {

    # 読み込まれたデータのサイズチェック

    if ($ENV{'CONTENT_LENGTH'} > 1300) {

      &error("入力された文字数が多すぎます。");

    }

    read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

  } else {

    &error("この呼び出し方法は許可されていません。");

  }

  foreach (split(/&/, $buffer)) {

    ($keyword, $value) = split(/=/);    $value =~ tr/+/ /;

    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

    

    # S-JISコード変換

    &jcode'convert(*value, "sjis", "", "z");

    

    $value =~ s/&/&/g; # アンパサンド

    $value =~ s/"/"/g; # 括弧のエスケープ

    $value =~ s/\,/,/g; # カンマのエスケープ

    $value =~ s/</</g; # タグの排除

    $value =~ s/>/>/g; # タグの排除

    

    if ($keyword eq "comment"){

      $value =~ s/\r\n/
/g; # 改行の処理

      $value =~ s/\r/
/g;

      $value =~ s/\n/
/g;

    }else{

      $value =~ s/\r//g;

      $value =~ s/\n//g;

    }

    

    $FORM{$keyword} = $value;

  }

}

左の数字は便宜上つけた行番号です。サブルーチン内で完結するような番号を付してます。

最終更新:2013年02月08日 14:49