- ベストアンサー
CGIログファイルから1行分ずつ表示。
ログファイルが以下のように、 NAME=***&TITLE=***&HIDUKE=***= NAME=***&TITLE=***&HIDUKE=***= NAME=***&TITLE=***&HIDUKE=***= となっています。 このログファイルの中身を表示させようとしたのですが、1番上のデータ(1番古いデータ)しか表示されません。 これを数行分(できれば最新5件、など)表示させたいのですが、どのようにすればいいのでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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で作っていると判断して、答えさせていただきます。 上記のような感じでやればいいと思います。違っていたらどなたか添削お願いします。
その他の回答 (1)
- wolfwood
- ベストアンサー率50% (199/398)
こんにちは、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"; } 落ち着いて見直してくださいね。
お礼
できました。ありがとうございます。 >う~ん、あせらないで作ってくださいね。 はい、いつも注意されることなんです。 でもエラーになったりすると余計に焦ってしまって…。 申し訳ありません。 ありがとうございました。
お礼
回答ありがとうございます。 以下のようにしてみましたが、うまくいきません。 #!/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"; } うまく組みこめていないのだと思いますが…。 どこが違うか指摘お願いいたします。