時間の関数を使った例です。
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といった変数になってます。
一般に、比較的簡単なプログラムでは、基本的な流れは次のようになります。
#! /usr/bin/perl などの「おまじない」を書く
print文を書く。この中で変数を使う
しかし、自分でプログラムを作る場合は、ちょっと逆向きの考えかたになります。
もう少し複雑な例を考えてみましょう。
現在時刻がわかるならば、それに合わせて「おはよう」「こんばんは」とあいさつ文が
変更できそうですね。そういうプログラムを考えてみましょう。
まず、レイアウトを考えます。
ここでは、単に「< H1 >こんにちは! 私のページへようこそ< /H1 >」という単純なものとします。
次に、変化させる部分を考えます。ここでは「こんにちは!」の部分だけとします。
さて、この例では時刻から言葉を決めるという関数が必要になります。
しかし、そんな便利な関数は用意されてないので、自分で考えることになります。
ある程度プログラムに興味がある人ならわかると思いますが、
とりあえずこういう場合は「if 〜 elsif 〜 else」という条件分岐を使います。
具体的には、次のようになります。
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のタグ部分を変数にすることによって、 ページの色、画像なども変化させることができます。