SAK 図書館
CGI-Perl 基礎実地編 - 実習3 (ヒアドキュメント)
■test03.cgi
------ ↓ ここから ↓ ------
#!/usr/local/bin/perl
#// 変数
$msg1 = 'ヒアドキュメント';
#// HTML 出力 (ヒアドキュメント)
print << "END_OF_HTML";
Content-type: text/html
<HTML>
<P>はじめての $msg1 ですのん。</P>
<TABLE border="1" cellPadding="2" cellSpacing="1">
<TR>
<TD>1</TD>
<TD>2</TD>
<TD>3</TD>
<TD>4</TD>
<TD>5</TD>
</TR>
<TR>
<TD>6</TD>
<TD>7</TD>
<TD>8</TD>
<TD>9</TD>
<TD>10</TD>
</TR>
<TR>
<TD>11</TD>
<TD>12</TD>
<TD>13</TD>
<TD>14</TD>
<TD>15</TD>
</TR>
</TABLE>
</HTML>
END_OF_HTML
#// 終了
exit(0);
------ ↑ ここまで ↑ ------
■解説
・この test03.cgi は、実行するとブラウザに
「はじめての ヒアドキュメント ですのん。」と 1 〜 15 の数字が
並んだテーブルが表示されます。
ヒアドキュメント形式の出力は大量の HTML をレスポンスする際に便利です。
print << "END_OF_HTML";
|_ ヒアドキュメント開始。
END_OF_HTML がくるまで次の行から出力。
Content-type: text/html
|_ Content-type の下の空白行は、とても重要。
この空白行で HTML ヘッダの終了とみなされます。
HTML の <HEAD> とは別の意味です。
<P>はじめての $msg1 ですのん。</P>
|_ ヒアドキュメント中にも変数を埋め込むことができます。
逆に $ や @ が変数のはじまりと勘違いされますので、
文字として $ や @ を使いたいときは、
\$ や \@ を使わなければいけません。
更に、ヒアドキュメントはダブルコーテーション変換が
働くようなので、「表示」などの言葉を使うと \n に相当
するコードが含まれているため、化けます。
EUC コードで書けば良いと読みましたが、そんなの面倒な
ので「表示」「可能」など化ける言葉は別の表現に私は
しています。
どうしてものときは、一旦ヒアドキュメントを終了して、
print '表示...'; の形式で使うと良いです。
<TABLE border="1" cellPadding="2" cellSpacing="1">
|_ ヒアドキュメント中では " が普通に使えます。
基本的には HTML ソースそのものが直接書けます。
END_OF_HTML
|_ print << "END_OF_HTML"; と対になったヒアドキュメント終了宣言と
なります。ヒアドキュメントは何度使っても良いです。
また終了識別 "END_OF_HTML" は同じものを何度使用しても良いです。
"HTML_NO_OWARI" と好きな識別子にしても良いです。
■補足
・Cookie の出力はヒアドキュメントでは、どうしてもうまくできません
でした。私は Cookie 部分は print 文でやってます。
■実地
・test03.cgi も実際に作成してテストしてみましょう。
アレンジを忘れずに。
ぼちぼちソースが長くなりつつありますので、覚えた構文部分は自分で
作った過去のソースからコピーしたり、エディタの編集機能を多用する
ようにしましょう。
■CGI-Perl 基礎実地編資料
■CGI-Perl 基礎編資料
■CGI-Perl 応用実地編資料
■PHP 基礎編資料
■PHP + MySQL 編資料