$1 ページの表示

1-2 時間を使った表示

時間の関数を使った例です。

  1: #! /usr/bin/perl
  2: print "Content-type: text/html\n\n";
  3: 
  4: ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime;
  5: 
  6: print "
  7: <HTML>
  8: <H1>現在時刻 $hour時 $min分 $sec秒です</H1>
  9: </HTML>
 10: ";

このプログラムは「現在時刻 13時 30分 2秒です」といった表示をします。

1、2行目は前回説明したものです。4行目は、現在時刻を得る関数を使ってます。 詳しい説明は省略しますが、上のように書けば、 変数 $sec、$min、$hour に、それぞれ現在の 秒、分、時 の値が代入されます。
6行目から、実際ページに表示するための print文になります。

要点は「ページの表示で変化させたい部分が、プログラムでは変数になる」ということです。
実際にページで表示したいことは「現在時刻 13時 30分 2秒です」ということですが、 ここの数字の部分が「変化させたい部分」になります。 実際のプログラムでは、その「変化させたい部分」が、$hour、$min 、$secといった変数になってます。

一般に、比較的簡単なプログラムでは、基本的な流れは次のようになります。

  1. #! /usr/bin/perl などの「おまじない」を書く
  2. 必要なデータ、変数を用意する
  3. 変数に値を代入する
  4. ページ表示のための print文を書く。この中で変数を使う

しかし、自分でプログラムを作る場合は、ちょっと逆向きの考えかたになります。

  1. ページデザイン、レイアウトを考える
  2. どの部分が変化するのか、固定なのかを考える
  3. 変化させる部分は変数を用意する
  4. 変数へ代入する値をつくるための、データ、関数などを用意する
  5. 実際にプログラムを書いてみる

もう少し複雑な例を考えてみましょう。
現在時刻がわかるならば、それに合わせて「おはよう」「こんばんは」とあいさつ文が 変更できそうですね。そういうプログラムを考えてみましょう。

まず、レイアウトを考えます。 ここでは、単に「< H1 >こんにちは! 私のページへようこそ< /H1 >」という単純なものとします。
次に、変化させる部分を考えます。ここでは「こんにちは!」の部分だけとします。

さて、この例では時刻から言葉を決めるという関数が必要になります。 しかし、そんな便利な関数は用意されてないので、自分で考えることになります。
ある程度プログラムに興味がある人ならわかると思いますが、 とりあえずこういう場合は「ifelsifelse」という条件分岐を使います。

具体的には、次のようになります。

  1: #! /usr/bin/perl
  2: print "Content-type: text/html\n\n";
  3: 
  4: ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime;
  5: 
  6: if    ($hour < 5 or $hour > 19){$Aisatsu = "こんばんは!"}
  7: elsif ($hour < 10){$Aisatsu = "おはようございます!"}
  8: else  {$Aisatsu = "こんにちは!"}
  9: 
 10: print "
 11: <HTML>
 12: <H1>$Aisatsu 私のページへようこそ</H1>
 13: </HTML>
 14: ";

6行目から7行目までで、時刻(ここでは変数 $hour の値)によって、 あいさつの言葉(ここでは変数 $Aisatsu)を決めてます。
順番はこの通りでなくてもいいですが、大小比較に注意しましょう。 7行目で、$hour <10 とだけ書いてますが、 6行目に、$hour <5 という条件が入っているので、 7行目に来るときは、「$hour <5 でない」とき、 つまり、実質的には「5 < = $hour <10」ということになります。
(もちろん、素直に 5 < = $hour <10 という条件で書いても良いです。 このへんは、読みやすさか、プログラムの無駄を省くかの選択になります)

もっと時刻を細かく分けて、「まだ眠いよー」「おやつは何かなあ」「夜はまだまだこれからよ」とかすれば、 もっと実用的な面白いものになるでしょう。 また、文章だけでなく、HTMLのタグ部分を変数にすることによって、 ページの色、画像なども変化させることができます。

実際の例


Next: 1-3 乱数を使った表示

Previous: 1-1 世界一簡単なCGI

Contents


Foundation of CGI Page

春風はるか haruka@harukaze.net