ページのリフレッシュとは、一定期間毎にページを再ロードすることです。
一般的には、チャットなどでページをリロードをしたい場合などに使用されています。
リフレッシュを行うためには、HTMLの〜タグ内へ書きます。
#!/sur/bin/perl
# リフレッシュする間隔(秒)
$REFRESH_SEC = 10;
print "Content-type: tex/html\n\n";
print <<E_O_M;
<HTML>
<HEAD>
<TITLE>ページのリフレッシュ</TITLE>
<META HTTP-EQUIV="Refresh" CONTENT="$REFRESH_SEC">
<BODY>
$REFRESH_SEC秒ごとにリロードします。
</BODY>
</HEAD>
</HTML>
E_O_M
今回は、リフレッシュする間隔を簡単に変更できるようにするために、
$REFRESH_SECという変数にリロード間隔を代入しました。
これは、CGIで出力しなくても通常通り作動します。
"print <<E_O_M;" とありますが、これはヒアドキュメントと呼ばれる機能です。
上記の出力をヒアドキュメントを使わず出力した場合
print "<HTML>\n";
print "<HEAD>\n";
print "<TITLE>ページのリフレッシュ</TITLE>\n";
print "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"$REFRESH_SEC\">\n";
print "<BODY>\n";
print "$REFRESH_SEC秒ごとにリロードします。\n";
print "</BODY>\n";
print "</HEAD>\n";
print "</HTML>\n";
というように、書く量も増え、非常に見づらくなってしまいます。
また、ダブルクォート"にエスケープする必要もあり、エラーの種も見つけづらくなります。
ヒアドキュメントの場合は、ダブルクォートなどの文字列はエスケープする必要がありません。
さらに、改行をすると自動でそこに改行を挿入してくれるので、非常に見やすくなります。
ヒアドキュメントの書き方は以下の通りです。
"print"の後に"<<E_O_M;"と入力すると、その次の行から行頭に"E_O_M"が表れるで出力されます。
なお、この"E_O_M"の部分は、任意に決めることができます。使える文字列は、半角の英数字とアンダーバーです。
ちなみに、英字は大文字のみが使え、初めの文字はこの英字で始まる必要があります。
しかし、ここで出力内容の変数や特殊文字を展開させたくない場合がでてきます。
そういう場合には、"E_O_M"の部分をシングルクォートで囲みます。
print <<'E_O_M';
$hensu = 10;
と表記すると$hensuへ10が代入されます。
E_O_M
シングルクォートで囲った場合でも改行をすれば自動で改行が挿入されます。
"E_O_M"をダブルクォートで囲んだ場合は、何も囲んでいないのと同等の処理になります。