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・・・とすることで、
ページ表示ができると思います。
まぁその辺は御自分で試してみてください。
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||