どんとこい!PC情報

Perlで掲示板を作ってみよう!

 

表示処理

フローチャート(新しいウィンドウで開きます)
この図を見ながら読むと、多少はわかりやすいかと思います。

ファイルの読み込み

まずはLogファイルを読みこみます。
書き込みの時と同じように、ファイルが開けなかったらエラーを表示させるようにします。
そして、開いたファイルを一件ずつに分割していきます。
すると次のように成ります。

	if (!open(OUT, "< $file")) {
		push(@msg,"ファイルの読み込みができませんでした。");
		&error;
	}
	while () {chop; push(@out, $_);}
	close(OUT);

While文の中の<OUT>というのは$_=<OUT>と一緒の事を表していて、意味はOUTから1行ずつ読みこんで$_に格納するという物です。
$_というのは、Perlには命令に変数名を省略できる物があり、省略した場合にはそれぞれに合わせて$_、@_などが対象となります。
この場合1行は文字列なので$_が対象になります。
その読みこんだ1行をchop命令で最後の改行コード(\n)をとり、@outへ格納していきます。

HTMLヘッダの出力

さて、CGIで表示させる時は普通HTMLの形を取ります。そこで、HTMLのヘッダ部分を考えていきます。
printという命令で出力していきます。

print <<"EOT";
	
	
	
	$MAIN_TITLE
	
	
	

$MAIN_TITLE

名 前:
E-mail:
URL:
メッセージ:


EOT

ここで、MAIN_TITLEには掲示板の名前が入っているとします。
Print <<"xxx";~~~~~~~xxx
というのはxxxからxxxまで出力するという命令で、Plint "~~~";と書いてあるのと一緒です。
1つ目の赤く示した「bbs.cgi」というのはこのcgiのファイル名が入ります。
そして、二つ目の赤く示したところは書き込みなのか読みこみなのかを判断するためにある変数です。
2度目以降にこのCGIを参照するとmodeにはwriteが入っているという事になります。

本文の出力

本文は繰り返し作業になるのでforeach文を使って読み込んだ物が無くなっているところまで繰り返します。
しかし、そのままだと発言数が増えた時にかなり長い間表示されつづけるので、カウンターを作って適当なところで終わらせます。
そして、表示をさせてカウンターがMAXになるか、発言が無くなるまで表示します。

	$num = 0;
	foreach (reverse @out) {
		last if $num == $max;
		$num++; 
		($name,$mail,$home,$text) = split(/<>/);

		print <<"EOT";
			
名 前:$name
URL: $home

$text\n; EOT exit; }

$numというのがカウンターで$maxというのが最大発言数です。この最大発言数は最初のところで指定しておいたものです。
あと、発言が新しい物ほど配列の下に入っているのでreverse関数で1番下の物が1番上に来るように逆順にしています。
ホームページ部分は好きに作ってください。

プログラム

すべてを合わせると、

sub output{
	if (!open(OUT, "< $file")) {
		push(@msg,"ファイルの読み込みができませんでした。");
		&error;
	}
	while () {chop; push(@out, $_);}
	close(OUT);

print <<"EOT";
	
	
	
	$MAIN_TITLE
	
	
	

$MAIN_TITLE

名 前:
E-mail:
URL:
メッセージ:


EOT $num = 0; foreach (reverse @out) { last if $num == $max; $num++; ($name,$mail,$home,$text) = split(/<>/); print <<"EOT";
名 前:$name
URL: $home

$text\n; EOT exit; } }

このようなプログラムになっています。

コメントの投稿


画像の中に見える文字を入力してください。

トラックバック

楽天 靴

クロックス ナディア

2013年8月 9日 11:48

crocs classic

コート ダウン

2013年8月 9日 11:49

サボ 靴

ビストロ クロックス

2013年8月 9日 11:49

トラックバックURL

http://www.isl.ne.jp/cgi-bin/mt/mt-tb.cgi/1237

サイト内検索

twitterTwitter

最新ブログ記事

2014年05月07日

BeagleBoardを使ってみる

BaegleBoardでLinuxをブートする

2011年10月12日

WindowsXPの見た目をWindows7風に変更

カレンダー表示をカスタマイズする

2011年09月14日

WindowsXPの見た目をWindows7風に変更

ウィンドウを半透明化する

2011年09月14日

WindowsXPの見た目をWindows7風に変更

Windows7風にカスタマイズ

2011年05月11日

WindowsXPの見た目をWindows7風に変更

使用ソフト概要説明

アクセスランキング

人気のコンテンツをご紹介!

1位

どんとこいPC情報

CD/DVDの仕組み CD編

3位

どんとこいPC情報

CD/DVDの仕組み DVD

4位

どんとこいPC情報

CD/DVDの仕組み DVD±R

ISL 情報戦略研究所

pagetopこのページの先頭へ戻る