カレッヂ |
質問者 覆面管理人
投稿日 2004/2/20(金) 18:07:06
はじめまして。 質問はタイトルに書いたとおりです。 これ↓ #!/usr/bin/perl -- # hello.cgi -- ダミー print "Content-type: text/html\n\n"; read(STDIN,$str,$ENV{"CONTENT_LENGTH"}); &write($ENV{"CONTENT_LENGTH"}, $str); sub write { my($no1,$no2) = @_; print<<"EOD"; <body bgcolor=silver text=navy> <h1>CGI TEST</h1> length:$no1<P> data:$no2<P> EOD } は、正常に動作したのですが、 これ↓ &write(0); 中略 &write(1); sub write{ my($frg) = @_; if($frg == 0){ print<<'EOD1'; Content-type: text/html <html><head</head><body text=navy><center> <h2>Hit&Blow</h2>" EOD1 } elsif($frg == 1){ print<<'EOD2'; <form action='hitblow.cgi' method='post'> 4<br> <input type=hidden name='ans' value='$ans'> <input type=text size=4 name='num'><br><br> <input type=submit value=''><br> </form></center></body></html> EOD2 } } は、なぜかサーバ付属のCGI構文チェックをすると、 Can't find string terminator "EOD1" anywhere before EOF at /home/sites/www.pinpoint.co.jp/web/cgi-bin/hitandblow.cgi line 50. と、でて、実際動かしてみてもエラーがでます。 何故ですか? 上の文章を読むとEOD1に対応する終了がないみたいな書き方ですけど ちゃんと最後にEOD1はあるし・・・ 何より最初のスクリプトがちゃんと動くのが納得いかない・・・
プロバイダ参照: |
回答者 しあわせのツボ
[削除]
投稿日 2004/2/20(金) 19:51:57
ヒアドキュメントの終了を示す行は、指定した文字列と改行コード以外が存在してはいけません。 行頭にタブやスペースを入れた場合も、その条件を満たさなくなります。 インデントせず、行頭に記述してください。 |
質問者 覆面管理人
[削除]
投稿日 2004/2/23(月) 09:48:28
ありがとうございました。 ご指摘された点を修正したら、きちんと動きました。 |
このページは終了したので返信(回答)は書きこめません
Web裏技 |