【最大10000ポイント】当たる!!質問投稿キャンペーン!

http://www.supra.cx/joyful2chMe/index.html
こちらのjoyful2ch.cgiの1071行目からのワード検索で、
検索対象を親記事のみにしたいのですが、どうすればよいでしょうか。
ログの中の$reno=""が親記事のようなのですが・・

# ファイルを読み込み
@new=();
open(IN,"$logfile") || &error("Open Error : $logfile");
$top = <IN>;
while (<IN>) {
$flag=0;
foreach $pair (@pairs) {
if (index($_,$pair) >= 0) {
$flag=1;
if ($in{'cond'} eq 'OR') { last; }
} else {
if ($in{'cond'} eq 'AND') { $flag=0; last; }
}
}
if ($flag) { push(@new,$_); }
}
close(IN);

ここの辺りを書き換えるのでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

ログの書き込みは一般に$logfile="./log.dat"となってDATファイルに格納されてると思うのですがDATファイルだと開きにくいので


log.cgiとかlog.txtなどの空ファイルを作って
$log.file="./log.cgi"にして記事がどのように格納されているか確認してみてはどうでしょうか?
僕はこの方法でどのように書き込まれてるかいつも確認してます

($no,$reno,$date,$name,$email,$sub,$com,$url)なのでおそらく
http://www.supra.cx/cgi-bin/joyful2chMe/joyful2c … の1件目だったら
(10<>1106<>2007/1/13(土)23:33<>free<><>test<>テスト通信<><>)
のように格納されていると推測されます(多分)

なので親記事判定を別に作ってみてはどうでしょうか?
($no,$reno,$date,$name,$email,$sub,$com,$url,$oya) ←$oyaは何処でもいい
書き込みのときに親記事だったら $oya=1; とかにしてそれで判別してみてはどうでしょう?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ログを新たに追加すると他の箇所も書き加えることになりそうなので・・
やはり中身を見ても$renoが空の記事が親記事になっていたので

if ($flag) {
while (<IN>) {
($no,$reno,$date,$name,$email,$sub,$com,$url) = split(/<>/);
if ($reno eq "") {
push(@new,$_);
}
}
}

としたところ親記事のみ検索することができるようになりました。
whileやsplitなどは自分で使ったことがなかったので
適当にやってみましたが、正常に動いたようです。

お礼日時:2007/01/14 01:05

掲示板をダウンロードしないとソース文分からないので推測で・・・



if ($flag) { push(@new,$_); のところを

if($flag){
if(記事が親記事){push(@new,"$_");}
}

または if($flag and 記事が親記事){push(@new,"$_");}

のようにしてみては?
多分質問のソース文はログの中からワードが一致したら@newに書き込んでいく・・・と思ってます(--;)

この回答への補足

回答どうもありがとうございます。

if ($flag) {
if ($reno eq "") {
push(@new,$_);
}
}

としてみましたが、記事が判別されていませんでした。
いきなり$renoという変数をもってきたので
認識されていないのでしょうか・・?

foreach ($page .. $page_end){
($no,$reno,$date,$name,$email,$sub,$com,$url)
= split(/<>/, $new[$_]);

これは最初のソースのあとのログ検索結果を表示するプログラムの
冒頭ですが、こういう命令をもってこないとダメなのでしょうか?

補足日時:2007/01/13 22:01
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング