No.3ベストアンサー
- 回答日時:
Antsさんこんばんは。
掲示板ソフトではそういう目的のために定番になっている手法があります。モジュールがなくても大丈夫です。おそらくモジュールも同じようなことをやっているはずです。
例えば次のようなファイルをtemplate.htmlという名前で保存します
****************************************************
<html>
<head>
<title><!--title--></title>
<meta http-equiv="Content-Type" content="text/html; charset=<!--charset-->">
<meta http-equiv="Pragma" content="no-cache">
</head>
<body bgcolor="#<!--bgcolor-->" text="#<!--textcolor-->">
<h1><font color="#<!--fontcolor-->"><!--owner-->さんの掲示板</b></font></h1>
<!--begin-->番目から<!--end-->番目までの記事を表示しています<br>
<!--message-->
<hr>
<form action="BBS.cgi">
<input type="hidden" name="Next" value="<!--nextpage-->">
<input type="submit" value="次のページへ">
</form>
</body>
</html>
******************************************************************
そしてスクリプトの中で$title,$charset,$bgcolor,$textcolor等の変数を用意しておき
*****************************************************************
open (IN,"template.html");
print "Content-type: text/html\n\n";
while(<IN>){
s/<!--title-->/$title/;
s/<!--charset-->/$charset/;
・
・
・
s/<!--message-->/$message/;
・
・
・
s/<!--nextpage-->/$nextpage/;
print ;
}
*******************************************************************
と置き換えていけばお望み通りのことができます。
ただし$messageの部分は1行ではすまないのでこの部分はスクリプトであらかじめ作ってやる必要があります。
例えばログファイルLOG.txtが
投稿者名:投稿日:内容
という書式で記録してあるとすれば
******************************************************************
open (INC,"LOG.txt");
$message="";
while(<INC>){
($name,$day,$mes)=split(':',$_);
$message = "$message" .
"<table>\n
<tr><td>$name</td><td>$day</td></tr>\n
<tr><td colspan="2">$mes</td><tr>\n
</table><br>\n";
}
*****************************************************************
などとやります。leaz024さんが紹介されているモジュールも上に書いたようなルーチンをパッケージ化したものだと思われます。
なお上のスクリプトはささっと書いたのでコマンドのつづり間違い等があるかも知れませんがご容赦下さい。
なるほど、$messageの部分にあらかじめループ部分を入れておくのですね。
あとは変数<!--変数-->部分をおきかえてやればいいのですね。
<!--変数-->といったフォーマットにしているのは僕みたいにドリームウェーバーなどのソフトを使っている人にとって大助かりです。
oodaikoさんありがとうございました。
早速試してみます。
No.2
- 回答日時:
HTML::Templateモジュールを使うと、簡単に実現することができます。
下記サイトで勉強してみてはいかがでしょうか。
参考URL:http://member.nifty.ne.jp/hippo2000/perltips/htm …
ありがとうございます。
まさに私の探していたものです。
モジュールがレンタルサーバーで使えるか?など勉強しなければいけない部分がありますが、やってみます。
がんばります。
No.1
- 回答日時:
>そのとき、たとえば掲示板のように、ループ部分があっても、そのテンプレートがつかえるようにしたいのですが、そのような、スクリプトをご存知の方いらっしゃいましたら、どうか教えてください。
そのような汎用のスクリプトはしらないのですが…。
例えばこんな風にしたらどうでしょう?
template1 : ページのヘッダー部分(掲示板であればタイトル部分ぐらいまで)
tepmlate2 : 繰り返し部分
template3 : ページのフッター部分
このように3分割しておけば、かなり汎用的に使えるはずです。
プログラム内ではまずヘッダー部分のテンプレートを使い、続いて繰り返し処理ではtemplate2を使う、最後にtemplate3から生成したデータを出力すればお望みの動作になると思います。
しかし、この設計だとページ内で複雑にTABLEタグが入り組んでるような構造だと使えないかもしれません。
なるほど、
完全なHTMLとしない方法ですね。
ドリームウェーバーなどのHTMLソフトを使いたいのでできればさけたいのですが、、
でも逆に、こうやったほうが、さくさく動きやすいのでしょうね。
複雑にループっていうのはたぶんないと思います。
ループのネストは無いです。
ありがとうございました。
もうちょっと検討してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
- JavaScript カラーミーショップのsectionループ内で、[引数][戻り値]ありの関数的な処理を行いたいです。 1 2022/05/07 19:39
- Perl Perlで特定文字列から特定文字列までを抜き出したい 4 2022/04/02 14:24
- HTML・CSS サイトをマルチデバイス対応にする為の準備や、CSSなどのおすすめサンプル集やアドバイスを頂きたいです 1 2022/07/13 22:15
- JavaScript 読み込んだQRコードをフォームに受け渡したい 1 2023/05/18 11:18
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- その他(プログラミング・Web制作) awkのtoupper() 1 2022/10/21 20:39
- ホームページ作成・プログラミング アニメ公式サイト風なWebページを作りたいです。 無料のテンプレートはありますか? 2 2022/04/02 11:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlを難読化、暗号化させたい
-
wordの数式について 定積分を書...
-
ラジオボタンが両方とも選択で...
-
「value」に2つの値をセットす...
-
htmlからパラメータで、cgiに渡...
-
VB.net データーグリッドビュー...
-
select値をhiddenのvalueに渡し...
-
Perlでuse socketを使用してフ...
-
チェックボックスの返す値
-
postデータのあるページの再表示
-
[HTML]プルダウンメニューの横...
-
FORMのselectの選択肢を最初か...
-
一つの検索窓で複数のサイトか...
-
1つのformに2つのsubmitボタン
-
index.html(トップページ)か...
-
htmlでセルの値を取得して計算...
-
proftpdで困ってます。
-
Rubyのmechanizeを利用したファ...
-
別formのhidden項目を自form値...
-
MSPゴシックで、一番幅を取る文字
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ショッピングカートのクッキー...
-
cgiからsendmailを送信で文字化け
-
プログラミングについての質問...
-
perlを難読化、暗号化させたい
-
メール送信後のHTMLが文字化け...
-
content-dispositionによるファ...
-
.htaccessでサーバエラー
-
CGI実行できない。ソースが表示...
-
cgiで動画ファイルをアップロー...
-
CGIから移動したページでのリン...
-
MySQL+phpでHTML表示をhif...
-
UTF-8で文字化けしないようにす...
-
HPが文字化けしてしまいます
-
文字化けが出現
-
WEBアプリケーションからフォル...
-
CGIプログラムを使った申し込み...
-
SUN BBSの改造方法
-
ラジオボタンが両方とも選択で...
-
「value」に2つの値をセットす...
-
WEBページを強制的に横画面で見...
おすすめ情報