■=Perl, ■=結果
このページでは if修飾子を使って、時間ごとにメッセージを変えてみようと思います。if文でも同じような動作をさせることはできますが、あえてif修飾子の練習です。
上はこのように書かれています。
SSIでCGIをの結果を表示させています。SSIについては「ココのSSI入門?です」を参照してください。ここではCGIの説明をします。 l_if_1.cgi はこのように書かれています。 |
#!/usr/local/bin/perl ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); $word1 = "「<a href=\"./cgi-bin/haiku.cgi\">乱数で俳句を造ります</a>」見てくれました。どうですか?"; ---中略--- $word9 = "<br><br>それから"; $word10 = "おはようございます、ココです。"; $word11 = "こんにちは、ココです。"; $word12 = "こんばんは、ココです。"; print "Content-type: text/html\n\n"; print $word10 if ($hour > 4 and $hour < 11); print $word11 if ($hour > 10 and $hour < 19); print $word12 if ($hour < 5 or $hour > 18); print "$hour時ですね。<br>"; print "遅くなってきましたが、大丈夫ですか?$word7$word1" if ($hour == 0 or $hour == 1); print "まだ起きているのですか?$word8$word2$word9$word5" if ($hour == 2 or $hour == 3); print "こんな時間ってお腹がすきませんか?$word5$word8$word4" if ($hour == 4 or $hour == 5); print "まだ起きているの?それとも早起き?$word7$word4$word5" if ($hour == 6 or $hour == 7); print "朝ご飯は手べた?$word7$word1$word5" if ($hour == 8 or $hour == 9); print "おやつを食べる習慣はないの?$word7$word2$word9$word3" if ($hour == 10 or $hour == 11); print "お昼ご飯は食べました?$word5$word8$word1" if ($hour == 12 or $hour == 13); print "おやつにしましょうよ?$word8$word3$word9$word2" if ($hour == 14 or $hour == 15); print "お茶を一杯いかがですか?$word5$word8$word3" if ($hour == 16 or $hour == 17); print "少し疲れてきました?$word7$word5" if ($hour == 18 or $hour == 19); print "晩御飯はまだですか?$word7$word4$word9$word3" if ($hour == 20 or $hour == 21); print "すっかり夜ですね!$word5$word8$word4" if ($hour == 22 or $hour == 23); exit; |
スクリプトは少し長いですが単純です。
先ずはPerlの場所を宣言しています。続いて現在時間を取得するためtime関数を使っています。time関数については「年月日や曜日・時刻の取得」を参照してください。
【→Perl Reference: time】
【→Perl Reference: localtime】
#!/usr/local/bin/perl ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); |
続いて$word1から$word12までに、表示する言葉を代入しています。
$word1 = "「<a href=\"./cgi-bin/haiku.cgi\">乱数で俳句を造ります</a>」見てくれました。どうですか?"; ---中略--- $word12 = "こんばんは、ココです。"; |
ここからが実際の表示部分です。先ずブラウザに表示できるようにContent-typeを指定しています。そして次の3行が if修飾子です。5時から10時までは「おはよう」、11時から18時までを「こんにちは」、4時までと19時以降を「こんばんは」と表示させようとしています。
最後の行で現在時刻を表示しています。
print "Content-type: text/html\n\n"; print $word10 if ($hour > 4 and $hour < 11); print $word11 if ($hour > 10 and $hour < 19); print $word12 if ($hour < 5 or $hour > 18); print "$hour時ですね。<br>"; |
if ($hour > 4 and $hour < 11) { print $word10; }
if ($hour > 10 and $hour < 19) { print $word11; }
if ($hour < 5 or $hour > 18) { print $word12; }
|
if ($hour > 4 and $hour < 11) { print $word10; }
elsif ($hour > 10 and $hour < 19) { print $word11; }
else { print $word12; }
|
最後に2時間ごとに表示を変えています。各々の行で指示している言葉に加えて、最初に設定した$word1から$word12を組み合わせながら表示させています。
print "遅くなってきましたが、大丈夫ですか?$word7$word1" if ($hour == 0 or $hour == 1); ---中略--- print "すっかり夜ですね!$word5$word8$word4" if ($hour == 22 or $hour == 23); exit; |
| | Back | Coco's Home | ココとPerlで遊びませんか | |