北海道日本ハムFIGHTERS Part405

このエントリーをはてなブックマークに追加
264代打名無し@実況は実況板で
# BB といえば KING なので bbk (w
# 入力: 加工前の $FORM{'MESSAGE'} 出力: 0 = OK; 1 = NG;
sub CHK_bbking($){
  my $message = shift;
  my $value;
  my @queries = qw/0 0 0 0/;
  my %charactors;

  $message =~ tr/[\x00-\x1F\x7F]//; # 非表示文字を削除
  while($message =~ s/^.//){
    $value .= $&;
    next if $value =~ /[\x81-\x9F\xE0-\xFC](?![\x40-\x7E\x80-\xFC])/;
    if (!exists $charactors{sprintf "%04X",$value}) {
      $charactors{sprintf "%04X",$value} = 1;
      $value = ord($value) & ord($&);
      $queries[0]++ ; # COUNT
      $queries[1] += ord($value) ; # ADD
      $queries[2] += ord($value) ^ 0xFF ; # XOR
      $queries[3] += ord($value) >> 1 ; # shift R
    }
    $value = '';
  }

#  printf "%s.bbk.2ch.net\n",join '.',reverse map sprintf ("%d",($_ & 0xFF)), @queries; exit;
  $message = gethostbyname(sprintf "%s.bbk.2ch.net\n",join '.',reverse map sprintf ("%d",($_ & 0xFF)), @queries);
  return $message =~ /^127/ ? 1 : 0 ;
}