CGIでHTMLファイルを読み込み、加工するには?

[上に] [前に] [次に]
みみぃ 2000/02/16(水) 19:03:18
HTMLの基本部分が記述されているファイルを読み込み、CGIで加工してブラウザにHTMLを出力するには、どのような方法を取ればいいのでしょうか?
参考になるHPなどありましたら教えてください。

EMI 2000/02/16(水) 19:17:00
open IN, "xxx.html";

while(<IN>){
  #加工する
  #出力する
}

close IN;
基本的にはこんな感じでしょうか。

MOSS 2000/02/16(水) 19:37:08
さらに言えば、xxx.html(拡張子は別に何でもよい)の記述を
============================ xxx.html ======================
<html>
<head><title>title</title></head>
<body>
<KAKOU> <!--ここに自分で名づけた<KAKOU>というタグを入れる-->
</body>
</html>
=========================================================
として while(<IN>) { }のなかで正規表現を使って加工部分を置換する
方法をよく見かけます。

みみぃ 2000/02/17(木) 17:47:32
EMI様、MOSS様、返答ありがとうございました。

MOSS様
具体的にどう記述すればいいでしょうか?
初心者なもので、全然分からなくて・・・申し訳ないのですが。
HTMLファイルの方は<KAKOU>と書き込んで、
CGIの方で
while(<IN>){'KAKOU'="あいうえお"};
でいいのでしょうか?
全然違う事を書いていたらすいません。

EMI 2000/02/17(木) 18:04:56
while(<IN>){
  s/<KAKOU>/あいうえお/gi;
  print;
}

かな。一例としては、こんな感じ。
ちなみに、この処理の場合はHTMLファイル中に埋め込んだ<KAKOU>というタグがすべて「あいうえお」に置換されて出力されます。

EMI 2000/02/17(木) 18:08:31
もう少しわかりやすく書くと、こう。

while($line = <IN>){
  $line =~ s/<KAKOU>/あいうえお/gi;
  print $line;
}

ちなみに、加工のやり方は何がしたいかによって変わります。
ので、具体的に何がやりたいかがわからなければ、答えようがありませんよ。

みみぃ 2000/02/17(木) 18:20:53
EMI様ありがとうございます。

具体的には、読み込むファイルはテンプレートとして読み込みたいので、
そのファイルを元にテンプレートのある一部を変更して(例えば、掲示板なら
掲示板のタイトルを)ブラウザに表示したいのです。
ページのレイアウトは、読み込んだHTMLファイルのまま表示したいのですが、
方法はありますでしょうか?

その場合、読み込むHTMLファイルと、CGIのファイルでどのような
記述をすればいいでしょうか?

MOSS 2000/02/18(金) 01:22:40
>そのファイルを元にテンプレートのある一部を変更して(例えば、掲示板なら
>掲示板のタイトルを)ブラウザに表示したいのです。
タイトルを掲示板に変えるという例をとると

<html>
<head><title><KAKOU></title></head>
<body>
・・・・・・以下省略・・・・・

というテンプレートを用意しておき,CGIスクリプトで

while($line = <IN>){
  $line =~ s/<KAKOU>/掲示板/gi;
  print $line;
}

とすれば,xxx.htmlの記述は

<html>
<head><title>掲示板</title></head>
<body>
・・・・・・

となります。

MOSS 2000/02/18(金) 02:22:33
ひょっとして,<KAKOU>をタグだなんて表現したのが,
かえって混乱させてしまったのでしょうか?
これはただの目印です。別に<....>という形じゃなくても構いません。

KEN [HomePage] 2000/02/21(月) 01:51:26
http://www2.famille.ne.jp/~kuwa/perl/
にあるK-MSGって掲示板を参考にされたらどうでしょう?

みみぃ 2000/03/10(金) 11:57:46
[[解決]]
長い間解決のチェックをしていませんでした。すいません。
無事解決しました。

[上に] [前に] [次に]