このページはSSIを使用しています。Isweb以外のサイトから直接このページにアクセスされた場合、正しくSSIが動作できません(Iswebでは他サイトから直接CGIなどの呼び出しを禁止しているため)。ここを押して正しく表示できるようにしてください。

時間ごとにメッセージを

=Perl, =結果


ありがとう! このページでは if修飾子を使って、時間ごとにメッセージを変えてみようと思います。if文でも同じような動作をさせることはできますが、あえてif修飾子の練習です。
[an error occurred while processing this directive]

上はこのように書かれています。
<!--#exec cgi="./cgi-bin/l_if_1.cgi" -->

SSIでCGIをの結果を表示させています。SSIについては「ココのSSI入門?です」を参照してください。ここではCGIの説明をします。


l_if_1.cgi はこのように書かれています。

スクリプトは少し長いですが単純です。

先ずは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修飾子はif文で、下のように書くこともできます。
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; }

if修飾子では条件式を処理の後の書き、行の最後にセミコロン(;)が必要になります。


最後に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で遊びませんか |

Copyright 2001-2002 Coco's Home. All rights reserved.