※このサンプルの解説は、「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";