• ベストアンサー

CGIの中にJAVA Script

CGIプログラムはまったくの初心者です。 perlでCGIプログラムを組んで、HTMLを書き出すときに Java Scriptもいっしょに書き出すことはできますか? print "Content-type: text/html\n\n"; print "<html><head><title>$title</title>\n"; ---この間に入れたいのですが・・・--- print "</head>\n"; print "<body topmargin=0 leftmargin=0 marginheight=0 marginwidth=0 bgcolor=$bg_color text=$text_color link=$link_color vlink=$vlink_color background=$bg_gif>\n"; Java Scriptの menu_0.addMenuItem("ショップ案内","location='shop.html'"); 等を入れるときに 「"」や「;」はどういう風に表現すればうまくいくのでしょうか。 Java Script以外のタグの中の<font size="2">などは「"」をとれば 大丈夫なのは知っていますが、Java Scriptで「"」や「;」をとってしまうと 動作しなくなりました。

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

  • ベストアンサー
  • kokucho81
  • ベストアンサー率61% (157/255)
回答No.1

大体ながながとHTMLやJavaScriptを記述するときには、『ヒアドキュメント』という機能を使うと話しが簡単だと思います。 print << "THE_JAVASCRIPT" ← ここは適当に名前をつけます。 <script language="javascript"><!-- ここは、かきたいようにjavascript書けば良いです。 $titleなどの変数はちゃんと展開されます。 //--></script> THE_JAVASCRIPT ← ここはコロンをつけてちゃダメ♪ Perlの書籍やインターネットなどで、『ヒアドキュメント』を調べましょう!

xiaolong_goo
質問者

お礼

遅くなりましたがありがとうございました。 その方法で解決しました。

その他の回答 (3)

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.4

 通常はkokucho81さんの言う通り、ヒアドキュメントを使うことをおすすめします。  またヒアドキュメントは行数がかさむので、1行のprint文内で処理したい場合は、makihiroさんのように「\」を直前につけて「"」をエスケープする(単なる文字として認識させる)ようにします。  ただこの方法は文字列が見にくくなる為、ミスの元になることが多いので、qqを使って   print qq{<BODY onLoad="OnLoad()">}; などのようにした方がよいでしょう。 (qqの区切り文字は{}でなくてもよいのですが、HTMLやJavaScriptでは絶対使わない文字を指定するようにすると、バグ予防になります。)  それからHTMLタグ内でも、"は省略しない方がいいですよ。value値がスペース交じりの文字列の場合や、値に指定した変数がヌルだった場合などに、予期しない動作をすることがあります。

xiaolong_goo
質問者

お礼

遅くなりましたがありがとうございました。 print qq{<BODY onLoad="OnLoad()">}; ・・・なんて方法もあるんですね。 いろいろと参考にさせていただきました。

  • makihiro
  • ベストアンサー率37% (29/78)
回答No.3

"の前に\を付けて\"のようにすれば大丈夫ですよ。 私もこの作業をよく見落としてinternal server errorになっちゃいます(^^;

xiaolong_goo
質問者

お礼

遅くなりましたがありがとうございました。 しかし、かなりの量のテキストだったら大変ですね。

  • kokucho81
  • ベストアンサー率61% (157/255)
回答No.2

はうぁ!! print << "THE_JAVASCRIPT"; ここはセミコロンいります。

関連するQ&A