![]()  | 
| カレッヂ | 
質問者 ルヒア
 投稿日 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; 
プロバイダ参照:自サーバーでテスト  | 
回答者 しあわせのツボ
 [削除]
 投稿日 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裏技 |