- ベストアンサー
CGIログファイルから1行分ずつ表示。
japansの回答
open(NOTE,"*****log");#ログファイルを開き@DATEに入れます @DATA = <NOTE>; close(NOTE); foreach(@DATA){#@DATEを改行で区切って$aに入れて、配列$Aに代入して行きます ($a)=split(/\n/,$_); $A[$no]=$a; $no++; } @A=reverse(@A);#配列の順番を逆にします。 for(i=0,i<4,i++){#配列を[0]から5回出力します。 print "$A[i] <BR>" } Perlで作っていると判断して、答えさせていただきます。 上記のような感じでやればいいと思います。違っていたらどなたか添削お願いします。
関連するQ&A
- ログファイルからキーワードを検出、何行目か返す。
以前こちらでおなじような質問をして回答いただいたのですが、どうしても理解できないので再度質問させていただきます。 フォームで名前や件名などを入力してもらい、その入力データをログファイルへ入れます。 ログファイルは以下のような感じのものが何行も続いています。 NAME=hoge&TITLE=tatoeba&NAKAMI=konnnakanji&LOCALTIME=20030127094224= (LOCALTIMEだけは自動で入るようになっています。) その後で、このログファイルから任意の行を取り出したいのですが、削除されることもあるため○行目という値では意図するものが出てこない可能性もあるので、 LOCALTIMEで検索をしたいのです。 20030127094224と入れた場合、ログファイルの○行目、と判定するようなことをしたいのです。 どのようにしたらいいのかさっぱりわかりません。 よろしくお願いします。 #perlです。
- ベストアンサー
- CGI
- cgiのログの書き方
ここで教えてもらってログファイルの書き方(挿入のようなカンジで)をやってみたんですが、どうしても思い通りの動きをしません。 希望としては、IDが一緒なら、その同じIDの下に書き込みを行う。同じIDが見つからなければ、一番上に書き込みを行う。 というようにしたいのです。 上記のことを行うために以下のコードを書きました。 --------------- for ($w=0;$w<$gyou+1;$w++){ @log3 = split(/&/,$log2[$w]); foreach(@log3){ ($keyw,$valuew) = split(/=/,$_); $FORMw{$keyw} = $valuew; }#foreach open(FH3,">>log.log"); if ($ID == $FORMw{'ID'}){ print FH3"ID=$ID&COUNT=$COUNT&TITLE=$TITLE&NAME=$NAME&PASSWORD=$PASSWORD&NAKAMI=$NAKAMI&COLOR=$COLOR&TIME=$year/$m on/$day $hour:$min:$sec&SEARCHKEY=$year$mon$day$hour$min$sec\n"; last; } else { if($w+1 == $gyou){ print FH3"ID=$ID&COUNT=$COUNT&TITLE=$TITLE&NAME=$NAME&PASSWORD=$PASSWORD&NAKAMI=$NAKAMI&COLOR=$COLOR&TIME=$year/$m on/$day $hour:$min:$sec&SEARCHKEY=$year$mon$day$hour$min$sec\n"; close(FH3); } } }#for --------------- どうしてもログファイルの最新情報としてしか書き込みがされません。 また、最新ログを1番上に書き込む、ということをしたいのですができますか? 日付順などで並べ替えをしてしまうと、ぐちゃぐちゃになってしまうので、並べ替えを行わずに、です。 またこのような書き込みの仕方をしなくても、 例えば並べ替えで、Excelみたいに、1番目と3番目を基準に並べ替え、とかでできますか? (私は1つの方法でしか知らないので、どうしても意図する順番になりません。)
- 締切済み
- Perl
- ログファイルからデータ呼び出し。
ログファイル(例えば1.logという名前とします)の中身を呼び出し、それを現在表示されているcgiのフォーム内に 表示させるにはどのようにしたらいいのでしょうか? たとえば、クッキーみたいに <input type=text name=021118 value=***></input> とすればできるのでしょうか? よろしくお願いします。
- ベストアンサー
- CGI
- 1行分だけ表示(?)
日記用のCGIを作ってます。 ただ単純にフォームから入力したものをログファイルに書き込んで、それを表示するだけのものです。 で、上記の事はできているのですが、今度はちょっとレベルアップさせて ■まず$dayと$titleを一覧表示(これはできてる) ■$titleをクリックすると$messegeも読める という事をしたくて色々考えてみたのですが、何がなんやらさっぱり分からなくなってきました。 ログファイルには、ただそのまま $id:$day:$title:$messege \n と保存してあります。 $idは削除用に私が勝手にフォームからナンバーをふってるんですが、この$idを利用して$titleにリンクを貼る事は可能ですか? 自分でも何を質問したらいいのかよくわかってないのですが、もし上記のような事が可能であれば、この後どういった流れで処理を加えていけばいいのかなど教えて下さい。 補足すべき事があれば補足します。 よろしくお願いします。
- ベストアンサー
- Perl
- アクセス解析の生ログとして渡されたxlsファイル、生ログ?
■状況 「これがウェブサイトAの生ログです」と渡されたxlsファイル、 確かに「日付、訪問時間、ホスト、参照元、最初の閲覧ページURL&タイトル、最後の閲覧ページURL&タイトル、ブラウザ、プラットフォーム、ビュー」が1行目にあり、2行目以降はずら~っとそのデータが6万行程度並んでいます。 ■質問 このデータをgoogle analyticsのごとく見やすくするためには、一体どのようにしたらいいのでしょうか? ■想像してる解決方法 xlsファイルをlogに変換して、フリーのログ解析ソフトに読み込ませたらなんとかなるのかな、と思っているのですが、まずその変換方法がわかりません>< それともxlsファイルのままで何かしら綺麗に解析をしていく方法があるのでしょうか? 不勉強で申し訳ありませんが、何か方法をご教示いただけますと本当に助かります。よろしくお願いいたします。
- ベストアンサー
- その他([技術者向] コンピューター)
- apeboard+にて旧.datファイルのログを表示させられない
apeboard+にて以前のログを表示させたいのですが、何度チャレンジしてもうまくいかないため、詳しい方にお知恵をお貸し頂きたく質問させて頂きました。 そもそも、datファイルを少し触ってアップしなおしたところ、掲示板にログが表示されなくなってしまい、パスワードも受け付けなくなってしまいました。 そこで、同じ名前をつけた空のdat(0bite)ファイルをアップロードし、新たにパスワードを設定した後、そのdatファイルをダウンロード。一行目に書かれているパスワードの暗号をコピー。そして、ログデータの入った旧datファイルの一行目に暗号をペーストして、アップロードしました。 ※アップロードするdatファイルのファイル名は、boardni.cgiのデータファイルの場所を示す部分と同じ名前であることは確認しております。 空のdatファイルでパスワードを指定した時は管理画面へのパスワードを受け付けてくれるのですが、一行目を書き直した旧datファイルをアップロードしなおすと、パスワードを受け付けなくなり、古いログも表示してくれません。新しい書き込みは表示されますが、クッキーをオンにしてパスワードを入れて書きこまないと、表示がおかしくなります。 試しに、空のdatファイルに一行目の暗号だけを記載してアップロードしてみたのですが、同じ現象がおきました。 上記において、何か手がかりになりそうな事がありましたらアドバイス頂けると助かります。
- 締切済み
- CGI
- CGIのログをHTMLで表示
CGIのログ(カウント)をHTMLにSSIで表示させようと思い下記のCGIを考えたのですがうまく表示されません。 皆様のお力をお貸し下さい! [log.dat] L内容 DataSu='***'; (***にはカウント数字が入っています) 上のカウントログをHTML表示させる為にCGIを作る [count.cgi] #!/usr/local/bin/perl #カウントログ読み込み open(IN,"ログまでの相対パス"); # カウンターを読み出す $count = <IN>; #ファイルを閉じる close(IN); #サイト数の表示。 print "Content-type: text/html\n\n"; print "$count"; 上記のCGIを表示させるとDataSu='***';とファイル内容が全て表示されてしまいます。 ***のカウント数だけ表示させるにはどうしたらいいのでしょうか?
- 締切済み
- CGI
- CGIで検索~html内の1行丸ごと表示したい
すいません、本サイト及びネット検索でも解決出来ません(理解出来ません)でしたので、宜しくお願いします。 現在、以下の(1)のようなhtmlの文字検索をして(2)のように表示させたいと思ってます。 (1)htmlの中身 都道府県 県庁所在地 北海道 札幌(←この文字に市のHPへのリンクあり) 青森県 青森(←リンクあり) 岩手県 盛岡(←リンクあり) : 東京都 東京(←リンクあり) : 大阪府 大阪(←リンクあり) : (2)検索文字に『県』と入れると 青森県 青森(←リンクあり) 岩手県 盛岡(←リンクあり) : と表示して欲しい。 そこで、CGI置いてあるサイト(http://www.tohoho-web.com/wwwsoft.htm)から『WwwSearch Ver3.15』をモディファイして検討しているのですが、 ・1つのhtmlファイルに対して、1行しか表示されません。 ・県庁所在地へのリンクがない『青森』という文字だけになってしまいます。 この場合、 青森県 青森(←リンクなし) とだけ表示され、残りの県は表示されない 自分としては、htmlの中身にマッチしたら、その行を丸ごと、しかも複数行マッチしたらその数全部表示して欲しいのですが、ダウンロードしたCGIの中身を修正するものの、期待通りに動いてくれません。 CGIに詳しいかた若しくは条件に合うCGIの入手先をご存知のかた、助言お願いします。
- 締切済み
- CGI
- windowsで書き込んだファイルをサーバーに送ると改行が追加され2行のデータになる。
QNo.1112250ディストリビューション質問をさせていただいたものです。 windowsで作成したファイルをサーバーに送り、PHPでデータを読み込むと空の行が追加されます。 1)windowsでのデータは「"name",111」ですが、エディター(TeraPad)で下記のように表示されます。([EOF]が1行下に表示されます。) "name",111 [EOF] 2)このデータをサーバーに転送し下記のように読み出すと2行分のデータとして読まれます。2行目は空のデータになっています。 while(!(feof($fp))){ $buf=fgets($fp,100); $buf=chop($buf); $data=split(",",$buf); $name[$count]=$data[0]; $password[$count]=$data[1]; 空の行を読まないようにする方法をご教示いただけませんか。よろしくお願いします。
- ベストアンサー
- PHP
お礼
回答ありがとうございます。 以下のようにしてみましたが、うまくいきません。 #!/usr/local/bin/perl open (NOTE,"top.log"); @DATA=<NOTE>; close(NOTE); foreach(@DATA){ ($a)=split(/=/,$_); $A[$no]=$a; $no++; } @A=reverse(@A); print "Content-type:text/html\n\n"; for(i=0,i<4,i++){ print "$A[i]<BR>\n"; } うまく組みこめていないのだと思いますが…。 どこが違うか指摘お願いいたします。