A06:サウンドをランダムに変える

人それぞれの好みですが、自分が作ったページにサウンドを流したいという人もいると思います。
今回は、ランダムに曲を選んでサウンドを鳴らすようなCGIを紹介します。
サウンドだと、日付や時刻などの情報から特徴を出すのは難しいので、ランダムに変わるようにしました。

ファイルを開く

解説
#!/usr/local/bin/perl
プロバイダがPerlを置いている場所を記述します。
ここでは/usr/local/bin/perlにあるとしています。
$sound[0]="sound1.mid";
$sound[1]="sound2.mid";
$sound[2]="sound3.mid";
$sound[3]="sound4.mid";
$sound[4]="sound5.mid";
$sound[5]="sound6.mid";
$sound[6]="sound7.mid";
$sound[7]="sound8.mid";
$sound[8]="sound9.mid";
$sound[9]="sound10.mid";
鳴らすサウンドのファイル名を$sound[xx]に代入しています。
0〜9の数字とファイル名を対応させる為に行っています。
$number=int(rand(10));
0以上10未満の整数、つまり0〜9の値を取得しています。
☆今回のポイント☆
乱数を取得して利用しよう!
printf("Content-type:audio/midi\n\n");
CGIとして出力するデータがMIDI形式のサウンドである事を出力しています。
$size = -s $sound[$number];
open(IN, $sound[$number]);
binmode(IN);
read(IN, $buf, $size);
close(IN);
数字に対応したサウンドのファイル名を$sound[$number]で指定して、データを読み込んでいます。
$sizeには、ファイル名を元にデータのサイズを取得して代入しています。
ファイルから読み込むデータがバイナリ形式なのでbinmode(IN)を書いています。
binmode(STDOUT);
print $buf;
サウンドのデータ本体を出力しています。
CGIとして出力するデータがバイナリ形式なのでbinmode(STDOUT)を書いています。
exit;
プログラムを終了させます。