ヒアドキュメント(perl)について

[上に] [前に] [次に]
geepleng 1999/11/15(月) 07:53:24
ヒアドキュメントについてお尋ねします
サーバーによって ” でエラーがでたり ’ でエラーがでたり 何も囲まなくても
通ったりと少し戸惑っているのですが正しい使い方を教えて下さい。
そしてその際 Contnt-type・・・・ はヒアドキュメントの前で出力するのか
後でも良いのか、についてもお願いします。

Content-type: text/html
print <<"HERE";

Content-type: text/html
print <<'HERE';


print <<'HERE';
Content-type: text/html


print <<HERE;
Content-type: text/html


サーバによってエラーが出たりでなかったりするので
その時々に応じてクォーテーションを付けたり外したりしています。
-wcでエラー内容も見ているのですが、イマイチ正確な方法が解りません。
本等でも,どのような時に” や ’ をつける等は記述されてないものが
多く困っています。

宜しくおねがいします。

andi 1999/11/15(月) 08:57:13
確かContent-typeを入れた場合に
改行二つ分入れなくてエラーになったことがありますが。

print <<;
Content-type:text/html

<html>

って感じで。
それかも。

ちゃいパパ [HomePage] 1999/11/15(月) 09:31:07
>Content-type: text/html
>print <<"HERE";
>

>Content-type: text/html
>print <<'HERE';
>
はパールの構文的に間違いです!
Content-type: text/htmlはprint文で標準出力し、後ろに2つ以上改行が必要です。

>print <<'HERE';
>Content-type: text/html
>
はスカラー変数等が展開されません! ($AAA等がそのまま文字列で出力)

>print <<HERE;
>Content-type: text/html
>
これはとりあえずOKみたいですが、私は以下をお勧めします。
print <<"HERE";

B-Cus 1999/11/15(月) 20:49:47
> 本等でも,どのような時に” や ’ をつける等は記述されてないものが
> 多く困っています。
変数の展開という意味では、
 print "..." と print <<"END" は同じ。
 print "..." と print <<END は同じ。
 print '...' と print <<'END' は同じ。

hiro-kim 1999/11/17(水) 09:53:42
上記にある指摘の繰り返しなのですけれど。
here documentという言葉の意味をまだ把握していないのかな,と思いました。

printする文書(document)を,ファイルからでもなく標準入力からでもなく,ここ(here)から読みとりなさい,ですから,
http://www.tohoho-web.com/wwwcgi2.htm#CgiScript
のような<HTML>文書をWebブラウザに送りたいならば,こうなりますよね。

print <<END_OF_HERE_DOCUMENT_を表すテキトーな文字列
Content-type: text/html
(←改行がある)
<html>
(……省略……)
</html>
END_OF_HERE_DOCUMENT_を表すテキトーな文字列

とほほのperl入門 → 概要編 → その他 → <<によるデータ表記
http://www.tohoho-web.com/wwwperl1.htm#EOF


また,シングルクォート/ダブルクォートの機能については,以下を参照のこと。
変数の評価によって最終的にどういう「テキトーな文字列」になるかを自分で理解していれば,クォートをつけてもつけなくても,''と""のどちらを使おうともかまわないわけです。

とほほのperl入門 → 概要編 → 定数・変数・値 → 文字列
http://www.tohoho-web.com/wwwperl1.htm#String

[上に] [前に] [次に]