
CGIの改造(中級編3)です。今回は配列です。
尚、私もあまりわかってないので、勉強しながら書いてます。。。
配列とは、簡単に言うと、ひとつの変数に複数の値をぶち込んだものと考えてください。
実際見たほうが早いですね。
| 
@hairetu = ('a', 'b', 'c', 'd');
 | 
見ての通り、「@hairetu」の中には、「a,b,c,d」と言う4つの値が入ってます。
この値を取り出すときですが、
| $hairetu[1] | 
というように、変数に「 [ ] 」を付けて、中に数字で指定してやります。
ここで注意ですが、配列は0から数えますので、上記の「$hairetu[1]」だと、
「b」と言う値をとります。
値の代入や表示の仕方は、
| $xx[0] = 1; → 0番目に数値1を代入 $xx[2] = 'cc'; → 2番目にccを代入 @xx = ( "11", "abc" ); → 配列xxに11,abcを代入 @xx[2..3] = ( "22", "ee" ); → 2〜3番目に22,eeを代入 print @xx; → 配列の中身すべてを表示 print $xx[0]; → 0番目を表示 print @xx[0..2]; → 0〜2番目を表示 $#変数名 は、@変数名 の配列の最後の添え字(個数から1をひいたもの)を表わします。 @hairetu = ( "a", "b", "c", "d" ); print "$#hairetu\n"; → 3と表示されます。 | 
このようにやります。
また、配列には操作するための関数がありますので、一応紹介します。
| 
$x = shift(@xx);			→	@xxの最初の値を取り除いて、$xに格納する(@xxは最初の値を取り除いたものを返す)
$x = pop(@xx);			→	最後の値を取り除く(最後以外の値を返す)
unshift(@xx1, $xx);		→	配列@xx1の最初に値$xxを追加する
push(@xx1, $xx);			→	配列@xx1の最後に値$xxを追加する
push(@xx1, @xx2);			→	@xx1 の後ろに @xx2 の値を追加する
splice(@xx, 3, 2);			→	$xx[3..4](2個)を取り除く(取り除いた値以外の値を返す)
reverse(@xx);			→	@xxの値を逆順にしたものを返す
@x = split(/,/, $s);		→	文字列$sを","で分割してその配列を返す
foreach $i (@xx) {print "$i\n";}	→	すべての配列の値について処理を行う
 | 
ここで、配列を使ったひとつの例を見てみます。
曜日を代入するときに使った例です。
| 
($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime(time);
++$mon;
@youbi = ('日曜', '月曜', '火曜', '水曜', '木曜', '金曜', '土曜');
$data = "$man/$mday ($youbi[$wday])";
 | 
こうすると、前に紹介した「if ($wday == 0) {..」などとやらなくても楽です。
配列は使いどころが難しい(と言うか複雑と言うか・・・)ので、
いろいろと研究してみてください。
配列が使えるといろいろなことができます。がんばりましょう。
なんか今回は改造と言うより基礎知識みたいな感じだなぁ。。。
常識だと思いますが、CGIの改造は各自の責任においてやってください。
どんなことがあっても、私にふらないでください。