A02:時間帯によって画像を変える
毎日、インターネットをしている人でも、同じ日に同じページを何度も見る事は、あまり無いと思います。
今回は、時間帯によって違う画像を表示するようなCGIを紹介します。
単純な仕組みですが、面白い画像を表示するようにしておけば、同じ日でも時間が経過した後で、再度見てみようという気にさせられるかも知れません。
ファイルを開く
解説
#!/usr/local/bin/perl
プロバイダがPerlを置いている場所を記述します。
ここでは/usr/local/bin/perlにあるとしています。
$image[0]="day0.png";
$image[1]="day1.png";
$image[2]="day2.png";
$image[3]="day3.png";
表示する画像のファイル名を$image[xx]に代入しています。
0〜3の数字とファイル名を対応させる為に行っています。
$today=(localtime(time))[2];
$number=$today / 6;
時刻の数字が0〜23の範囲で$todayに代入されます。
4枚の画像を6時間ごとに切り替えるので、時刻を6で割った値を$numberに代入しています。
☆今回のポイント☆
時刻を取得して利用しよう!
printf("Content-type:image/png\n\n");
CGIとして出力するデータがPNG形式の画像である事を出力しています。
$size = -s $image[$number];
open(IN, $image[$number]);
binmode(IN);
read(IN, $buf, $size);
close(IN);
数字に対応した画像のファイル名を$image[$number]で指定して、データを読み込んでいます。
$sizeには、ファイル名を元にデータのサイズを取得して代入しています。
ファイルから読み込むデータがバイナリ形式なのでbinmode(IN)を書いています。
binmode(STDOUT);
print $buf;
画像のデータ本体を出力しています。
CGIとして出力するデータがバイナリ形式なのでbinmode(STDOUT)を書いています。
exit;
プログラムを終了させます。