• ベストアンサー

ループが可能なHTMLテンプレートを切り離せるperlスクリプト

oodaikoの回答

  • ベストアンサー
  • oodaiko
  • ベストアンサー率67% (126/186)
回答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さんが紹介されているモジュールも上に書いたようなルーチンをパッケージ化したものだと思われます。 なお上のスクリプトはささっと書いたのでコマンドのつづり間違い等があるかも知れませんがご容赦下さい。

Ants
質問者

お礼

なるほど、$messageの部分にあらかじめループ部分を入れておくのですね。 あとは変数<!--変数-->部分をおきかえてやればいいのですね。 <!--変数-->といったフォーマットにしているのは僕みたいにドリームウェーバーなどのソフトを使っている人にとって大助かりです。 oodaikoさんありがとうございました。 早速試してみます。

関連するQ&A

  • PHPスクリプトでperlスクリプト

    はじめまして。PHP初心者です。助け舟をお願いします。 PHPスクリプトで、formの表示からデータの受け取り→ファイルに書込み→終了画面の表示ができるスクリプトを書くことが出来ました。 これをphpスクリプト1とします。 POSTで受け取った変数を元に処理した変数を返すperlスクリプトがあります。 これをperlスクリプト1とします。 perlスクリプト1をphpスクリプトにすることは私には困難なため、phpスクリプト1のファイルに書き込む前に、perlスクリプト1を実行→返った変数をphpスクリプトで使用しファイルに書込み→終了画面の表示を行いたいです。 こんなことってできますか?

    • 締切済み
    • PHP
  • PHPが出力したHTMLにinclude文を

    PHP4.3で、HTMLファイルをテンプレート出力する方式の掲示板を使っているのですが、テンプレートのHTMLファイル内に別のPHPスクリプトで出力した表示を貼り付けようと思い、 <?include("hoge.php");?> とinclude文を書き込んだのですが、これが反映されずにソース内に<?include("hoge.php");?>という記述がそのまま出て来てしまいます。 これが出来ない原因は、PHP実行→HTML表示→HTML内のPHP実行という二度のPHP実行が出来ないのか、<?include~を「文字列」として認識してしまっているのかのどちらかだと思うのですが、、 PHPファイルには一切手が加えられない状況なので、テンプレートHTMLに手を加えるだけで別のPHPスクリプトを読みこませたいのですが、何かいい方法は無いでしょうか?

    • ベストアンサー
    • PHP
  • <html>perlスクリプト</html>

    <html>~</html>の中に複数のperlスクリプトは書けるのでしょうか? htmlファイル1つの中には、<html>~</html>は1つだと思うのですが、 phpだと<?php>~<?>とすれば、<html>~</html>の中に複数書けるみたいですが、perlでも書けるのでしょうか?

    • ベストアンサー
    • Perl
  • Perlでプロクシ越えでHTMLファイルを読み込むスクリプト

    Perlでプロクシ越えでHTMLファイルを読み込むスクリプトを書きたいのですが、どのように記述すればよいでしょうか?

    • ベストアンサー
    • Perl
  • HTMLからPerlを呼び出すには?

    今、Perlで他のサイトのtxtファイル(中身はliタグやaタグのHTMLファイルで、そのサイトではSSIで呼び出されています)を、入手して表示させるプログラムを作っています。 これを、呼び出して、あたかも私のサイトのように見せるにはどうすればよいでしょうか? 現在はiframeを使ってそのままtxtファイルのアドレスを指定しているのですが、拡張子がtxtであるため、IEでしか見れないという不具合があります。 これを解決するために、とほほさんのwww入門 http://tohoho.wakusei.ne.jp/wwwperl2.htm#socket で紹介されているPerlを参考にしました。そのPerlのファイルをブラウザから直接URL指定すれば実行できるようにはなり、txtの中身が表示されるようになったのですが、どのようにHTMLから呼び出せばよいのかわかりません。 やはりSSIで実行するしかないのでしょうか。 javascriptの場合、<script>タグでHTMLに直接スクリプトを記述できますが、Perlでもそのようなことは可能ですか?

    • ベストアンサー
    • HTML
  • imode/PC両方使える掲示板スクリプト

    imodeとPCの両方から書き込み&参照できる掲示板スクリプトを探しております。 新しいホームページを開こうと思い、掲示板スクリプトを探しているのですが、なかなか良いものが見当たりません。 できれば、画面表示部分は自分でカスタマイズできる、テンプレート型のものだと嬉しいです。 言語はPerl/PHPのものでお願いします。 皆様がお使いになられて、これはイイ!と思うものがありましたら是非是非お教えください。

  • javaスクリプトでHTML書き出しテンプレートを作りたい。

    こんばんわ。 最近javaスクリプト学習中です。 OKwebのような左にメニューのあるサイトを作成予定なのですが、普通に左メニューを作ると100ページ作ったとしたらメニューの変更時、100回書き加える必要がありますよね? そこでジャバスクリプトをHTMLに埋め込もうと考えました。 こんな具合です。 HTML内メニューを表示させたい箇所に <SCRIPT LANGUAGE="JavaScript1.2" src="aaa.js"></SCRIPT> を埋め込み、外部ファイルaaa.jsでは document.write('メニュー表示用html'); とメモ帳で記入しテストしているところです。 ただ、どうしてもうまくいきません、、document.writeだけでよいと思っていたのですが、、 どうしてもうまく表示させたいと思っています。 大変恐縮ですが、どなたか知恵を貸していただけたら幸いです。 よろしくお願いします。

    • ベストアンサー
    • CSS
  • HTMLからのシェルスクリプト呼び出し

    技術的に可能かどうか興味があるので教えてください。 HTMLファイルから、シェルスクリプトを呼び出す方法はありますでしょうか? 環境は、Solaris10、Apache、Perl使用中です。

  • HTML::TemplateのTMPL_LOOPについて

    PerlモジュールのHTML::Templateを利用していますが、多重ループの書き方がわかりません。 以下のようなループがある場合、どのようにperlを記述したらいいでしょうか。 <TMPL_LOOP NAME=LOOPA> <TMPL_VAR NAME=title> <TMPL_LOOP NAME=LOOP_GUEST> <TMPL_VAR NAME=guest_name> </TMPL_LOOP> <TMPL_VAR NAME=time> </TMPL_LOOP> ドキュメントを見ると下記のように記述するようですが、下記を値それぞれではなく、配列を利用する場合にはどのように記述すれば良いでしょうか。 $template->param(LOOP => [ { name => 'Bobby', nicknames => [ { name => 'the big bad wolf' }, { name => 'He-Man' }, ], }, ], );

    • ベストアンサー
    • Perl
  • Perlの部分的なHTML出力

    調べてみたんですがちょっと探し当てられなかったので教えてください。 HTMLファイルの中である一部分だけPerlによる出力でページを表示させたいのですが、それは可能でしょうか? 自分なりに調べて試してみたのは、HTMLで<IMG>タグをつかってPerlを呼び出し、Perlにprint文で出力を書けばいいのかな? とやってみましたが、できません。 全てPerlで出力するしか方法はないのでしょうか? ご解答お願いします