cgi025 「ログファイルの一部を取り出す」(05/02/15 Tue)

 

掲示板でもなんでもそうですが、ログってのは、ほっておくとどんどんたまってきて、

1ページに表示しきれなくなります。そこで、1ページに表示する件数を制限することで

対応することが必要となりますよね。そんなやり方の基本的な部分を紹介します。

ますは、ログファイル(log.txt)を適当に用意しました。

1,これは1行目
2,これは2行目
3,これは3行目
4,これは4行目
5,これは5行目
6,これは6行目
7,これは7行目
8,これは8行目
9,これは9行目
10,これは10行目
11,これは11行目
12,これは12行目

↑がログファイルの中身。一応カンマで区切って、改行してます。

で、実際のCGIの内容は↓。

#!/usr/local/bin/perl

$stpage = 2;
$enpage = 6;

open(LOG,"log.txt");
@logs=<LOG>;
close(LOG);
@logs=@logs[$stpage .. $enpage];
print "Content-type: text/html\n\n";
foreach $line(@logs) {
print "$line<br>";
}

exit;

最初の2行で、ログファイルの何件目(何行目)から何件目を表示するかを設定します。

↑の例では2〜6となりますが、CGIのルールの関係で、0が1行目を表します。

なので、2は3行目、6は7行目となりますので、ご注意ください。つまり2〜6ってことは、ログファイルの3行目〜7行目を指定することになります。

で、ログファイルを開き(open)、配列に代入(@log)し、代入したらログファイルを閉じ(close)て、

@log = @log [ 2 . . 6 ]となっています。これは、@logという配列に、@logの2(3番目)〜6(7番目)のデータを再代入しています。そして、foreachを使って、@logの中のデータを全て表示します。

表示すると・・・

♪ 結果表示 ♪

3,これは3行目
4,これは4行目
5,これは5行目
6,これは6行目
7,これは7行目

こうなります。うまくログファイルの一部が抜けたと思います。

これを応用すれば、1ページ目は0〜9(1行目〜10行目)、2ページ目は10〜19・・・とすることで、

ページ表示ができると思います。

まぁその辺は御自分で試してみてください。

 

★ Top ★

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送