[過去ログ] bbs.cgi再開発プロジェクト6 (1001レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
480
(3): 476 2005/06/08(水)15:50 ID:DTGWGuO70(2/3) AAS
> Shift_JIS部分だけquotemetaするコードくらいなら書きますよ。

とか言うほどの事じゃなかった。むしろテストの方が大変だった。
必要な作業だったのかどうか謎だけど一応上げておきます。
perl5.00503でテスト。

(票表十){2}

とか問題ありそうなShift_JIS + 正規表現交じりでやってみたけどOKでした。

foreach my $NG_word_ref (@FOX_Ro54){
  my $NG_word = $NG_word_ref->[0]; # エスケープしたままじゃ他で使えないのでコピー
    next unless $NG_word; # 空文字列ならスキップ
  $NG_word =~ s/((?:[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])+)/quotemeta($1)/geo;
省12
482: 動け動けウゴウゴ2ちゃんねる 2005/06/08(水)19:06 ID:DTGWGuO70(3/3) AAS
>>481
その文字列でチェックしてみたんですが、
5.00503ではエラー起きませんね。省略部分に何かあるんではないでしょうか?

> (\.|.|/|/)(3|3|4|4|6|6|8|8|9|9

これの8ビット目が立ってるバイトを「#」に置き換えると↓こんな感じです。

(.|#D|/|#^)(3|#R|4|#S|6|#U|8|#W|9|#X

「^」は一応メタキャラですが文頭にないので素通りのようです。最後、括弧が閉じてないので
勝手に閉じ括弧付けて実験しました。
省3
483
(2): 476 2005/06/09(木)12:03 ID:NnR04xax0(1/2) AAS
evalってコスト高いんじゃ……?と思ったのでベンチ取ってみた。
@FOX_Ro54が2048個のチェックを1000回。

Benchmark: timing 1000 iterations of with_eval, with_noeval...
 with_eval: 159 wallclock secs (158.80 usr +  0.02 sys = 158.82 CPU) @  6.30/s (n=1000)
with_noeval: 155 wallclock secs (154.28 usr +  0.05 sys = 154.33 CPU) @  6.48/s (n=1000)

誤差の範囲内なので、運用上の安全を考えると現状維持で良いと思った。>>480のコードのベンチも取ってみた。
ついでにJcode.pmで双方ともEUCに変換した時の結果も。

Benchmark: timing 1000 iterations of with_jcode, with_noreg, with_reg...
with_jcode: 493 wallclock secs (490.95 usr +  0.07 sys = 491.02 CPU) @  2.04/s (n=1000)
with_noreg: 124 wallclock secs (123.99 usr +  0.04 sys = 124.03 CPU) @  8.06/s (n=1000)
省4
492: 476 2005/06/10(金)11:20 ID:C8+6ZCy40(2/3) AAS
>>484
ご愁傷さまです。早い復活を祈ってます。

>>480
あと若干ソースを変更。空文字チェックは直前の方がより安全ってのと、evalの結果の代入は
必要ないかと。

foreach my $NG_word_ref (@FOX_Ro54){
  my $NG_word = $NG_word_ref->[0]; # エスケープしたままじゃ他で使えないのでコピー
  $NG_word =~ s/((?:[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])+)/quotemeta($1)/geo;
    next unless $NG_word; # 空文字列ならスキップ
  eval{$main::In_Strings =~ /$NG_word/} and return $NG_word_ref; # 合致したらリファレンスを返す。  
省2
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.197s*