• ベストアンサー

perlでのスキンの利用方法

スキンというか、メニュー部分をCGI内に書き込まなくて良い方法を勉強中です。 サイト(トップページ)に検索窓をつけているのですが、検索結果もトップページのメニューが出るようにしたいです。 現在上部にサイト名等と幾つかのサブメニュー、左側にメインメニューが幾つか並んでいて右下側がメインスペースとなってます。フレームではなくテーブルですべて構築しています。 この部分に検索結果(サブルーチン内を表示)を表示できるようにしたいんですがどのようにしたら良いですか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

// perl側 --------------------------- # # HTML変換(_%val%_→$vals{'val'}) # [F] &outputVals($fname,\%vals); # [I] fname テンプレートファイル # vals 変換ハッシュ # [O] 出力文字列 # sub outputVals { my ($fname,$vals)=@_; my $res=''; open(FH, "<$fname") or &exitOpenError($fname); while(<FH>) { s/_%(.+?)%_/$$vals{$1}/g; $res.=$_; } close (FH); return $res; } my %vals; $vals{'output'} = "検索結果"; print "Content-type: text/html\n\n"; print &outputVals("skin.html",\%vals); // skin.html側 ------------------------ <html><body>_%output%_</body></html> こんな感じで。

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

書き込んで気づいた(汗) open(FH, "<$fname") or &exitOpenError($fname); のexitOpenErrorは例外処理用に作った関数なんで open(FH, "<$fname") or die "Can't Open $fname\n"; とでもしといて。 それか例外処理いらないなら open(FH, "<$fname"); としといてください。

すると、全ての回答が全文表示されます。
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

どういう仕組みで動いているかは分かりませんが、 HTMLからCGIに検索ワードを渡して、CGIで表示しているのかな? CGI内にメニューを書けばいいと思いますが、そういうことではないのでしょうか?

master-3rd
質問者

補足

返答ありがとうございます。 トップページのメイン部分の一部に検索窓をつけています。もちろん、結果はCGIのほうが吐き出すのですが、上部・左部メニューが今のところ無いです。で、これをCGI内に記入しようとしたのですが、えらく長い上に上部メニューの一部が季節により変化するのでそのたびにCGIを書き換えるのも面倒ですよね。なので、スキンという形でメニュー部分を外部から取り入れ、メイン表示部分に結果を表示させたいんです。 こんな説明でOKでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A