|
理屈から学ぼうとすると8割がた挫折する!
これは、私の持論であり、経験則です。その証拠に、現在「JavaScript」を挫折中です。
そこで、いきなり、配列を使った役立つソースを公開します。
@color = ('red','green','yellow','black');
print "Content-type: text/html\n\n";
print "<html><head><title>$main_title</title></head>\n";
print "$body\n";
print "<form method=POST action=test3.cgi>\n";
print "好きな色を選択してください\n";
foreach $_ ( @color ) {
print "<font color=$_>■</font><input type=radio name=color
value=$_>\n";
}
print "</form>\n";
print "</body></html>\n";
「Perl Editor」初期設定を記述した後、上記のソースコードを貼りつけて、ブラウザで表示してみてください。
厳密には、初期設定はいらないのですが、必要な個所と不要な個所の説明をまだしていないので、わからない人は初期設定をそのまま貼りつけてください。余計なソースがあっても、スクリプトが動かなくなることはありません。
成功すれば、こんなのが表示されるでしょう。
ここで、ブラウザに表示されたページのHTMLタグを見てみましょう。
<form method=POST action=test3.cgi>
好きな色を選択してください
<font color=red>■</font><input type=radio name=color value=red>
<font color=green>■</font><input type=radio name=color value=green>
<font color=yellow>■</font><input type=radio name=color value=yellow>
<font color=black>■</font><input type=radio name=color value=black>
</form>
となっているでしょう? (改行位置は上記と異なります)
スクリプトのソースコード @color = ('red','green','yellow','black');
で、red green yellow black を別の色に変更して、再読み込みしてみましょう。色が変わると思います。
さらに、色を追加することもできます。
@color = ('red','green','yellow','black','追加する色');
色名(#で始まる英数をいれてもOK)を'(シングルクォーテーション)で囲みます。
色名と色名の間は,(カンマ)で区切ります。実際に試してみましょう。
上記のCGIスクリプトは、配列を使って、ユーザーに好きな色を選択させるようにしています。もちろん、ここで選択した色を掲示板なり、チャットなりで反映させるのですが、それはまた別の処理です。ここでは、配列の意味を理解するための素材としてよく使われるコードを用意しただけです。
このように、配列とは、複数の要素の集まりのことです。
(あ、急に難しくなった・・・)
- @colorの@は「これは配列だぞぉ」とParlに教えるための記号です。
- @の次の文字(半角を使うこと)が配列の名前です。一つのスクリプト内で重複する配列名を使わないように。配列名を忘れたときは、「Perl Editor」の変数エクスプローラで確認すること。
- =('中身1','中身2','中身3');で、配列の中にいれる文字や数字を指定します。
- 「(」「'」「)」「;」を忘れないように。忘れるとサーバーエラーで動いてくれません。
サンプルスクリプトで、もう一箇所「@color」を使っている場所がありますね。
ここでは「foreach」構文を使ってます。
この構文は、配列から一つずつ値(ここでは、「red」「green」「yellow」「black」)を取り出して、変数「$_」へ代入して、「{」と「}」にはさまれた個所に記述した文に反映させています。
値がなくなったらそれで終わり。次の文へ進みます。
サンプルスクリプトでは、print "</form>\n"; で</form>タグを生成します。
「$_」は「デフォルト変数」といって、変数にいちいち名前をつけるのはめんどくさいというものぐさプログラマのための変数です。ひどいときは、「$_」さえも省略されて、
foreach ( @color ) {・・・・}
なんて書く人も多いです。(私もたまに使ってます)
print "<font color=$_>■</font><input type=radio name=color
value=$_>\n";
はただの「print」文なんですが、さっき代入した「$_」をタグに書きこんでます。
「$_」には何が入ってるんでしょうか?ブラウザで見たタグと見比べてみましょう。
「foreach」構文は、一つずつ値を取りだし・・・
と書きましたね。ということは・・・ご名答!
@colorにいれておいた「red」「green」「yellow」「black」を一つずつ「$_」にいれて、print文でHTMLタグを生成しているんです。
だから、この構文は・・・print文を使って、
<font color=red>■</font><input type=radio name=color value=red>
<font color=green>■</font><input type=radio name=color value=green>
<font color=yellow>■</font><input type=radio name=color value=yellow>
<font color=black>■</font><input type=radio name=color value=black>
を出力しているんですね。
配布用スクリプトでユーザーに色を自由に選択させたいときなんかによく使われます。自分だけで使うスクリプトでも、その日の気分で色を変えたいときなんかに便利です。
人によって「for」とか「while」を使う人がいます。
というか・・・ここで「foreach」を使うことは珍しいのかも・・・
でも、最も説明しやすいので、今回は「foreach」を使いました。
一気に、「foreach」関数まで説明しちゃいました。ここで意味が理解できなくても、一向に構いません。だって、一つの便利なソースコードが手に入ったんだから、それで良しとしましょう。
|