複数行にわたる文字列を指定する場合,"行1\n行2\n行3\n..." のように書くこともできるが,行数が多くなると,テキストの内容がわかりにくくなってしまう。このような時には,「ヒアドキュメント (here document)」を使うとよい。文字列の代わりに,「<<終端文字列」を書き,実際のテキストは,次の行の先頭から,終端文字列のみからなる行の前までに書く。
次の例では,赤字の部分が終端文字列,緑色の部分が実際に出力されるテキストである。改行位置も,指定の通りになる。
変数に代入する文字列をヒアドキュメントで指定
----------------------------------------
$var = <<EOM;
<html>
<head>
<title>KWIC</title>
</head>
<body>
EOM
----------------------------------------
print の出力をヒアドキュメントで指定
----------------------------------------
print <<EOM;
<html>
<head>
<title>KWIC</title>
</head>
<body>
EOM
----------------------------------------
終端文字列にダブルクォートを付け "終端文字列" とすると,テキスト中の変数が展開されるが,シングルクォートで囲んだ '終端文字列' では変数展開は行われない。クォートがない場合は,ダブルクォートが付いているものとして扱われる。(クォートが付いていない場合,<< と終端文字列との間にスペースを入れるとエラーになる。)
クォートで囲めば,終端文字列にスペースを含めることもできるが,混乱するので,避けた方がよい。テキスト末の終端文字列にはクォートは付けない。また,終端文字列の前後に終端文字列に含まれないスペースを入れてはいけない。必ずクォートの付かない終端文字列だけからなる行とする。
----------------------------------------
$var = << "EOM"; #クォートで囲めば,<< の後にスペースが来てもよい。
<html>
<head>
<title>KWIC</title>
</head>
<body>
EOM #こちらにはクォートは付けない。
----------------------------------------