※このサンプルの解説は、「CGI(Perl)の解説」をすべて読み終えてる方を前提としています。

■ アクセスログを表組みで表示する

以前、「カンマ区切りのデータを表組みにする」を解説しましたので、そのCGIに少し手を加えるだけで「アクセスログ」を簡単に表組みで表示することができます。

いつものことですが、 この処理を理解するには当然ですが、「HTML」の知識が必要になります。
解からない方は「HTMLの解説」で勉強してくださいね。

【 解    説 】

以前、カンマ区切りのデータとして次のようなものを用意しました。
$flist[0] = "0001,John,35"; $flist[1] = "0002,Kate,26"; $flist[2] = "0003,George,18";

このデータは、配列データ配列変数にセットされたデータ)です。
今回のアクセスログはファイルに記録されてますが、ファイルに記録されたデータを配列データにセットする方法は「CGI(Perl)の解説」で解説していますから、その方法を使って次のように記述します。
$filnam = "acclogf.cgi"; open(FP,"<$filnam"); @flist = <FP>; close(FP);

次に、見出し部分を次のようにアクセスログ用に変更します。
<table border='1'> <tr> <th>日時</th> <th>表\示ページ</th> <th>リンク元</th> <th>エージェント</th> <th>ホスト名</th> <th>IPアドレス</th> </tr> </table>

また、データの表示部は、全部で6項目ありますから、記述を次のように変更します。
for $str0 (0..5){   print "<td>$strbuf[$str0]</td>\n"; }

以上のような箇所を変更するだけで、簡単に「アクセスログを表組みで表示する」ことができます。

では、上記の内容のように変更した「アクセスログを表組みで表示する」は次のようになります。

【記述サンプル】
#!/usr/bin/perl $filnam = "acclogf.cgi"; open(FP,"<$filnam"); @flist = <FP>; close(FP); print << "END_OF_DOC"; <table border='1'> <tr> <th>日時</th> <th>表\示ページ</th> <th>リンク元</th> <th>エージェント</th> <th>ホスト名</th> <th>IPアドレス</th> </tr> END_OF_DOC foreach $strdat (@flist){   print "<tr>\n";   @strbuf = split(/,/, $strdat);   for $str0 (0..5){     print "<td>$strbuf[$str0]</td>\n";   }   print "</tr>\n"; } print "</table>\n";
◆実行結果について

上記のサンプルを「acclogd.cgi」という名前で保存して実行してみてください。

実行結果はこちらをクリックしてください。
なお、実行結果については、各々のサーバーの環境、ユーザーの環境にによって内容は変わってきます。


page update:2019/01/09 19:55

Copyright (c) 2000-2009, all Rights Reserved & Produced by atom