掲示板では、書き込み時の日時を取得しておくことで、書き込みがいつ行われたのかを掲示板上で表示することができます。ここでは、書き込みがあった日時のデータを取得するプログラムを作成する方法について考えてみましょう。
エディタで「libraly.pl」を開き、書き込みが行われた現在時刻の取得と、掲示板に表示できる形式にするための処理をサブルーチンとしてlibraly.pl」の中に記述します。
sub get_time {
#世界標準時を表す環境変数を日本時間に修正
$ENV{'TZ'} = "JST-9";
#取得した時刻を月や日などの要素に分解
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time());
$mon++;
@week = ('日','月','火','水','木','金','土');#日時を表すデータをまとめて変数に代入する
$date = "$mon月$mday日($week[$wday]曜日)$hour時$min分";
}Perlでは、現在時刻を調べる関数「time」が用意されています。しかし「time」関数で取得した時刻は特殊な秒数(1970年1月1日からの経過秒数)になっているので、「localtime」関数を使って、月や日、さらには曜日と時刻などの要素に分解し、最終的には「○月○日○曜日○時○分」と表示されるようにしています。
例では、月の始まりが0からカウントされ、曜日は日曜日から順に0,1,2,・・・とカウントされるので、それぞれ値を修正して表示するようにしています。海外のサーバーなどを利用していると、サーバー上で世界標準時が使われているために、日本時間との間に9時間のずれが生じる場合があります。これは、世界標準時には、イギリスのグリニッジ天文台を基準とする時間が使われているためで、日本時間より9時間遅い時刻となっています。そこで例では、環境変数(CGIプログラムが呼び出されたときに取得される各種の情報を格納した変数のこと)のタイムゾーンを日本時間に設定することで、世界標準時とのずれを修正しています。