ヒア ドキュメント


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