#!/usr/local/bin/perl #------------# # 基本設定 # #------------# # 外部ファイル取り込み # ログファイル $logfile = '../main/topics.dat'; # テンプレート $tmpfile = './tmp.html'; # 画像ディレクトリとそのURL $imgdir = ''; $imgurl = ''; # 1ページあたり表示件数 $pagelog = 8; # 戻り先URL $home = '../index.html'; # URLの自動リンク (0=no 1=yes)※これ意味わからん。 $autolink = 0; #------------# # 記事表示 # #------------# local($flag,$msg,$i,$next,$back,$loop,@head,@loop,@foot); # HTMLヘッダ print "Content-type: text/html\n\n"; # テンプレート読み込み #▼変数の初期化 $loop=""; @head=(); @foot=(); $flag=0; #▼テンプレートファイルの読み込み open(IN,"$tmpfile") || &error("Open Error: $tmpfile"); while () { push(@head,$_) if (!$flag); if (//) { #「line1」は記事項目、「line2」は一覧誘導リンク $flag=1; } elsif (//) { $flag=2; } if ($flag == 1) { s/\n//g; $loop .= $_; #line1読み取り後、line2が読み取られるまで、テンプレートの改行マークを消して、$loopに横一列に格納。 } elsif ($flag == 2) { push(@foot,$_); #line2読み取り後、配列変数「@foot」にそれぞれ、テンプレートの内容(line2)以降を格納。 } } close(IN); # 記事データ読み込み #▼変数の初期化 @loop=(); $i=0; #▼記事データファイルの読み込み open(IN,"$logfile") || &error("Open Error: $logfile"); while () { $i++; last if ($i > $pagelog); #指定したページログ表示数に達したら記事データ読み込みループを抜ける。 #▼「$loop」は「line1」のテンプレートデータ、これを$mesに代入して、下記で生成し、@loop配列に入れていく。 $msg = $loop; #▼読み込んだ記事データーの各行を「<>」毎に分解。 ($no,$date,$sub,$com,$t[0],$w[0],$h[0],$t[1],$w[1],$h[1],$t[2],$w[2],$h[2]) = split(/<>/); #▼URLリンク &auto_link($com) if ($autolink); #▼$mes=「line1」の中にある、置き換え変数を実データに置き換え。 $msg =~ s/!subject!/$sub/i; $msg =~ s/!date!/$date/i; $msg =~ s/!date2!/$date/i; $msg =~ s/!comment!/$com/i; $msg =~ s/!Number!/$no/i; #▼画像(画像の登録は3枚まで可能。1個目の画像を0番とし、0〜2までの3枚で、画像の登録があるかどうかをチェック。画像のリンク名は「!image-1!」〜「!image-3!」の3種類。 foreach $i (0 .. 2) { $j = $i + 1; $image = "!image-$j\!"; if (!$t[$i]) { $msg =~ s/$image//i; next; } if ($h[$i] && $w[$i]) { $wh = "width=80 height=60"; } else { $wh=""; } $msg =~ s|$image||i; } #▼配列変数「@loop」の最後の配列に、上記で生成した記事表示データ「$mes」を追加。 push(@loop,$msg); } close(IN); #▼記事表示 print @loop; #▼フッタ表示 foreach (@foot) { if(/\<\!-- line_sub --\>/) { s/\<\!-- line_sub --\>/$sub/g; } print; } exit; #====[Sub Routine]==== ====[Sub Routine]==== ====[Sub Routine]==== ====[Sub Routine]==== ====[Sub Routine]==== ====[Sub Routine]==== ====[Sub Routine]==== #--------------# # エラー処理 # #--------------# sub error { &header; print <<"EOM";

ERROR !

$_[0]

EOM print &HtmlBot; exit; } #-----------------# # 自動URLリンク # #-----------------# sub auto_link { $_[0] =~ s/([^=^\"]|^)(https?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+)/$1$2<\/a>/g; } #--------------# # HTMLヘッダ # #--------------# sub header { if ($headflag) { return; } print "Content-type: text/html\n\n"; print <<"EOM"; $ver EOM $headflag=1; } sub HtmlBot { return "\n\n"; } __END__