CGI-BBS > 基礎 > CGIライブラリ > ヒアドキュメントに書いたHTMLを表示できない。


カレッヂ
カレッヂ


質問者 ルヒア  投稿日 8/3(日) 18:42:24
自分のページをCGIでヒアドキュメントを使い表示させようとしましたが
うまくいかず、なんとかエラーが出る部分を抽出する所まで至りましたが
そこから先に進めず、投稿させていただきました。
なんとか皆様のお力添えお願いいたします。

エスケ−プが必要なのはと思い
『"』の他にも、『\』自身や『,』や『.』、『@』、『$』にも試してみましたが
ダメでした

↓がソースです、よろしくお願いします。

#!/usr/local/bin/perl

$html = '
<HTML>
<HEAD>
<TITLE></TITLE>
<BODY></BODY>
<FORM ACTION="http://hogehoge.com/yomi-search/search.cgi" METHOD=GET TARGET=_blank window=_blank name="form1">
<CENTER>
<INPUT TYPE=HIDDEN NAME="mode" VALUE="search"><INPUT TYPE=HIDDEN NAME="page" VALUE="1">
<INPUT TYPE=HIDDEN NAME="sort" VALUE="$EST{defo_hyouji}">
<INPUT TYPE=TEXT NAME="word" SIZE=30 ID="word">
<INPUT TYPE=SUBMIT VALUE=" 検 索 ">
<INPUT TYPE=RESET VALUE="リセット">
<SELECT NAME="method" ID="method">
<OPTION SELECTED VALUE="and">AND(すべての語を含む)
<OPTION VALUE="or">OR(いずれかの語を含む)</SELECT><SELECT NAME="engine" ID="engine">
<OPTION SELECTED VALUE="google">Googleで
<OPTION VALUE="pre">ホゲホゲエンジンで
<OPTION VALUE="yahoo">Yahoo!で
<OPTION VALUE="infoseek">Infoseekで
<OPTION VALUE="goo">gooで
<OPTION VALUE="lycos">Lycosで
<OPTION VALUE="inetguide">iNET Guideで
<OPTION VALUE="excite">Exciteで
<OPTION VALUE="joy">J.O.Y.で
<OPTION VALUE="csj">CSJ What's Best!で
<OPTION VALUE="FRESHEYE">フレッシュアイで
<OPTION VALUE="InfoNavigator">InfoNavigatorで
<OPTION>-----------------
<OPTION VALUE="com">.com で
<OPTION VALUE="cojp">.co.jp で</SELECT></CENTER>
</FORM>
</HTML>
';

print "Content-type: text/html\n\n";
print <<END;
$html
END
exit;

プロバイダ参照:自サーバーでテスト
サーバのOS:WINサーバ
パソコンのOS:WinNT系
エディタ:テキストエディタ
FTPソフト:FFTP
サーバ移転:していない
改造:(未選択)
CGI習熟度:beginner

回答者 しあわせのツボ  [削除]  投稿日 8/3(日) 20:31:27
ヒアドキュメントの使い方としてはかなり間違っていますが、
文法的には動作するはずです。
おかしいなと思い調べてみたら…ありました。
> <OPTION VALUE="csj">CSJ What's Best!で
ここで ' が使われているためです。
ついでに、シングルクォートを使っているので
> <INPUT TYPE=HIDDEN NAME="sort" VALUE="$EST{defo_hyouji}">
が変数展開されません。たぶん期待する動作にはならないでしょう。
更に、</body>の後に内容を書くのもHTMLとして正しくありません。

正しいヒアドキュメントの使い方としては
$html = <<"END";
なんのかんの
END
その先があって
print $html;
になります。
最初の"END"をダブルクォートで囲めば変数展開され、
シングルクォートにすれば$や@などを変数展開せずそのまま表示します。
質問者 ルヒア  [削除]  投稿日 8/3(日) 21:00:14
しあわせのツボさん御指摘ありがとうございます。
返答が来るまでに2〜3日を想定しておりましたので
夕食を終えて覗いてみたら、返答があって、とても嬉しいです。

早速指摘されたとおりに作り直してみました
ところ正常に動作しました。ありがとうございます。
↓が作り直したソースです。

#!/usr/local/bin/perl

$html = <<'END';
<HTML>
<HEAD>
<TITLE></TITLE>
<BODY>
<FORM ACTION="http://hogehoge.com/yomi-search/search.cgi" METHOD=GET TARGET=_blank window=_blank name="form1">
<CENTER>
<INPUT TYPE=HIDDEN NAME="mode" VALUE="search"><INPUT TYPE=HIDDEN NAME="page" VALUE="1">
<INPUT TYPE=HIDDEN NAME="sort" VALUE="$EST{defo_hyouji}">
<INPUT TYPE=TEXT NAME="word" SIZE=30 ID="word">
<INPUT TYPE=SUBMIT VALUE=" 検 索 ">
<INPUT TYPE=RESET VALUE="リセット">
<SELECT NAME="method" ID="method">
<OPTION SELECTED VALUE="and">AND(すべての語を含む)
<OPTION VALUE="or">OR(いずれかの語を含む)</SELECT><SELECT NAME="engine" ID="engine">
<OPTION SELECTED VALUE="google">Googleで
<OPTION VALUE="pre">ホゲホゲエンジンで
<OPTION VALUE="yahoo">Yahoo!で
<OPTION VALUE="infoseek">Infoseekで
<OPTION VALUE="goo">gooで
<OPTION VALUE="lycos">Lycosで
<OPTION VALUE="inetguide">iNET Guideで
<OPTION VALUE="excite">Exciteで
<OPTION VALUE="joy">J.O.Y.で
<OPTION VALUE="csj">CSJ What's Best!で
<OPTION VALUE="FRESHEYE">フレッシュアイで
<OPTION VALUE="InfoNavigator">InfoNavigatorで
<OPTION>-----------------
<OPTION VALUE="com">.com で
<OPTION VALUE="cojp">.co.jp で</SELECT></CENTER>
</FORM>
</BODY>
</HTML>
END

print "Content-type: text/html\n\n";
print $html;

exit;

返信(回答)する

 


Web裏技