複数行にわたる文字列を指定する場合,"行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 #こちらにはクォートは付けない。 ----------------------------------------