• ベストアンサー

CGIログファイルから1行分ずつ表示。

ログファイルが以下のように、 NAME=***&TITLE=***&HIDUKE=***= NAME=***&TITLE=***&HIDUKE=***= NAME=***&TITLE=***&HIDUKE=***= となっています。 このログファイルの中身を表示させようとしたのですが、1番上のデータ(1番古いデータ)しか表示されません。 これを数行分(できれば最新5件、など)表示させたいのですが、どのようにすればいいのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • japans
  • ベストアンサー率25% (1/4)
回答No.1

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で作っていると判断して、答えさせていただきます。 上記のような感じでやればいいと思います。違っていたらどなたか添削お願いします。

KODAMAR
質問者

お礼

回答ありがとうございます。 以下のようにしてみましたが、うまくいきません。 #!/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"; } うまく組みこめていないのだと思いますが…。 どこが違うか指摘お願いいたします。

その他の回答 (1)

  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.2

こんにちは、wolfwoodです。 う~ん、あせらないで作ってくださいね。 あとerror.logは見れませんか? 悪い部分はerror.logに出ますのでそれを見て修正してください。 >for(i=0,i<4,i++){ >print "$A[i]<BR>\n"; >} 変数のiに$が抜けています。 また、forの構文で条件を区切るのは,ではなく;です。 for($i=0;$i<4;$i++){ print "$A[$i]<BR>\n"; } 落ち着いて見直してくださいね。

KODAMAR
質問者

お礼

できました。ありがとうございます。 >う~ん、あせらないで作ってくださいね。 はい、いつも注意されることなんです。 でもエラーになったりすると余計に焦ってしまって…。 申し訳ありません。 ありがとうございました。

関連するQ&A