A04:背景画像を毎日変える
常に同じ画像を背景に表示しているだけでは面白くないので、毎日違った画像を表示したい人もいると思います。
今回は、毎日違う背景画像を表示するようなCGIを紹介します。
毎日違うと言っても画像の枚数には限りがあるので、枚数分の日数でサイクルします。
ファイルを開く
解説
#!/usr/local/bin/perl
プロバイダがPerlを置いている場所を記述します。
ここでは/usr/local/bin/perlにあるとしています。
$max=5;
$image[0]="back1.png";
$image[1]="back2.png";
$image[2]="back3.png";
$image[3]="back4.png";
$image[4]="back5.png";
背景画像に使用するファイル名を$image[x]に、その枚数を$maxに代入しています。
$today=(localtime(time))[3];
$x=int($today % $max);
今日の日付を$todayに代入しています。
その数字を$maxで割った余りを出す事によって、0〜$max-1の数字を出して$xに代入しています。
☆今回のポイント☆
割り算の余りを使って特定の範囲内の数字を出そう!
printf("Content-type:image/png\n\n");
CGIで出力するデータがPNGファイルである事を出力しています。
$size = -s $image[$x];
open(IN, $image[$x]);
binmode(IN);
read(IN, $buf, $size);
close(IN);
$image[$x]というファイルからデータを読み込んでいます。
バイナリデータなのでbinmode(IN)を書いています。
binmode(STDOUT);
print $buf;
データを出力しています。
バイナリデータなのでbinmode(STDOUT)を書いています。
exit;
プログラムを終了させます。