- 締切済み
logファイルをひらいての処理の仕方を教えてください。
データベース検索のperlをカスタマイズ中です。 ユーザが入力したものを、検索条件のひとつにしたいのですが、表示されません。 インプットしたものはlogファイルに書き込まれるので、それを開いて反映させればいいのだろうということまでは、なんとかわかるのですが、どのように表記していいのか・・・今はない知恵を絞ってこのように表記しているのですが。 if (!open(FD,"$logfile")) { &error(0); } @lines = <FD>; $cnt = @lines; close(FD); print "<select name=P2 >\n"; print "<option value=\"0\" selected>指定なし\n"; $i =0; foreach $line (@lines) { ($no,$sub,$com1,$com2,$com3,$p1,$p2,$p3,$p4) = split(/\,/,$line); chop; if ($p2 ne '') { $i++; $p2s{($p2)[0]}++; $n++; } } foreach (keys %p2s) { print "<option value=\"$_\">$_\n"; } print "</select></td>\n";
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- vmlinuz
- ベストアンサー率30% (4/13)
その 「ERROR!」という表示が、1行目にある「&error(0);」によるものであるとすれば、ファイルが開けてないんでしょうね。spell miss とかないですか?
- y_oku
- ベストアンサー率62% (25/40)
えと。 ユーザの入力したものはlogファイルに書き込まれていて、 その形式は ($no,$sub,$com1,$com2,$com3,$p1,$p2,$p3,$p4) を「,」で区切ったものなんですね。 大まかなやりたいことが書いてあるのは大まかな方針が立つので とてもよいことです。 んで、細かく最終的にやりたいことも、もう少し書いてあると 助かるんで補足してください。 (ていうか最初からそこまで書いてあるほうがいいですよ。 表示されません。じゃ参考にならないです) log.txt----------------- 1,s,c1,c2,c3,p1,p2_1,p3,p4 2,s,c1,c2,c3,p1,p2_2,p3,p4 3,s,c1,c2,c3,p1,,p3,p4 4,s,c1,c2,c3,p1,p2_4,p3,p4 ------------------------ みたいな入力をどうしたいですか? ------------------------ <option value="p2_1">p2_1 <option value="p2_2">p2_2 <option value="p2_4">p2_4 ------------------------ たとえば、上のようになればいいだけなら、 boriさんのプログラムでも動いているようですよ。:) 現在のプログラムがどんな出力をしているのかは調べましたか?
お礼
補足などもしましたが、「できてますよ」のひとことを信じていろいろ試して while(<IN>){ を使ったらできるようになりました。 ありがとうございました。
補足
すいません、説明不足で・・・ 出力を確認すると、エラー表示がでるのです。 ■ 業 務 Content-type: text/html ERROR ! 0 というふうに。■業務というのが、いわゆるp2の中身というか、今回表示させたいものなのですが・・・このタイトルの下にプルダウン形式で入力したものを表示させて、検索キーのひとつにしたいのです。 したいことは、y_okuさんが理解してくださっているとおりです。 よろしくお願いします。
補足
ええっと、その後いろいろいじっていたら、どうも表示した場所がわるかったらしくエラー表示はでなくなりました。(^^ゞ しかし、やはり、プルダウンメニューには、opution value=0の指定なしという表示しかされません。せめて、logファイルを読み込んでいるのかどうかの確認がとれればとも思います。 よろしくお願いします。