時刻で変化する画面--CGI
【環境条件】
Eclipse 4.4(ルナ)
XAMPP 1.8.3
Perlは既にインストール済み
CGIを使用する時は、必ずApachを起動する
【時刻で変化する画面】
■ブラウザ画面
![](https://blogimg.goo.ne.jp/user_image/5f/74/c78c4c5f8e5562fd822031163bf5c9cf.jpg)
□CGI スクリプト「time.cgi 」
![](https://blogimg.goo.ne.jp/user_image/26/8d/9bc85a951243d28a3c7bb0d50cf57815.jpg)
【解説】
1)配列の宣言と初期化
my @msg = ('ぐーぐー', 'おはよう', 'こんにちは', 'こんばんは');←宣言と初期化をしている。
@msg は 配列を示す。更に、@msg 配列の4要素は$msg[0]、$msg[1]、$msg[2]、$msg[3] として表せられる。よって
$msg[$n1]の$n1 が 1 であれば、 $msg[1] は 'おはよう' ですから、「おはよう」が表示される。
2)時間処理の関数
配列をリスト形式で受け取る
($sec, $min, $hour, $day, $mon, $year, $wkday) = localtime(time);
localtime()はtime関数形式の時間をローカル時間に変換している
「月」 は 0~11 の数字で表されており、「曜日」 は 0~6 の数字で表されていることです。日本では、1月、2月、・・・ また 日曜、月曜、・・・ といいますが、英語圏では、Jan, Feb, ・・・ また Sun, Mon, ・・・ というように呼び方が異なるため、ユーザー側で任意に処理できるように数字で返しているのです。日本では 「月」 を数字で表しているので、 $mon++; でインクレメント演算するだけで済みます。「曜日」 を表すのはすこし厄介で、配列 @youbi を定義して、$wkday が 0 であれば$youbi[$wkday] で '日' を表すようにしています
「年」 は、1900 を足したときに西暦となる数字が返されます。そのため、11行目で $year += 1900; の演算を行っています。
3) int 関数
$n1 = int($hour/6); について
$hour は、現在の時間を表す 0~23 の何れかの値です。この $hour を 6 で割る演算を $hour/6 で行い、その演算結果を int 関数に引数として渡す。 int 関数は、与えられた引数の小数点以下を切り捨てて整数を返し、値は変数$n1 に代入される。
4)ヒアドキュメント
print <
※コメント投稿者のブログIDはブログ作成者のみに通知されます