配列とは
同じような目的で使用される複数の値を格納するのにそれぞれ変数を用意していると変数の数が無駄に増えてしまいます。例えば次の例を見てください。
my ($seiseki1, $seiseki2, $seiseki3); $seiseki1 = 80; $seiseki2 = 75; $seiseki3 = 69; print "$seiseki1¥n"; print "$seiseki2¥n"; print "$seiseki3¥n";
3人分の成績を格納するために変数をそれぞれ用意して格納しています。3人であればこれでも構いませんが10人分の成績を管理しようとすれば変数も同じだけ必要となります。
このように同じような目的で使用される複数の値を管理する場合は配列を使うと便利です。配列は1つの変数名を使って複数の変数を管理することが出来ます。先ほどの例を配列を使って書き直すと次のようになります。
my @seiseki; $seiseki[0] = 80; $seiseki[1] = 75; $seiseki[2] = 69; print "$seiseki[0]¥n"; print "$seiseki[1]¥n"; print "$seiseki[2]¥n";
配列を使った場合、配列として「seiseki」と言う名前を1つ用意し、必要な数の変数を変数名[インデックス]と言う形式で利用しています。
あまり配列を使った場合と使わなかった場合で何が違うのでしょうか。それは先ほどの例をさらに次のように書き換えることでよく分かります。
my @seiseki; $seiseki[0] = 80; $seiseki[1] = 75; $seiseki[2] = 69; for (my $i = 0; $i < 3; $i++){ print "$seiseki[$i]¥n"; }
変数名を別々に用意した場合は、各変数に対して1つ1つ処理を記述していくしかありませんが、配列を使った場合にはインデックス部分は数値として扱えますので繰り返し処理を組み合わせることで簡潔に処理が行えます。上記の例で言えば必要となる変数の数が100個になった場合でも画面出力部分は基本的に変わりがありません。
まったく別の目的で使用される複数の変数を配列としてまとめても意味はありませんが、今回のように同じ目的で複数の記憶領域が必要になるような場合には配列は大変便利です。
サンプルプログラム
では簡単なプログラムで確認して見ます。
use strict; use warnings; use utf8; binmode STDIN, ':encoding(cp932)'; binmode STDOUT, ':encoding(cp932)'; binmode STDERR, ':encoding(cp932)'; my @seiseki; $seiseki[0] = 80; $seiseki[1] = 75; $seiseki[2] = 69; for (my $i = 0; $i < 3; $i++){ print "$seiseki[$i]¥n"; }
上記を「test3-1.pl」の名前で保存します(文字コードはUTF-8です)。そしてコマンドプロンプトを起動し、プログラムを保存したディレクトリに移動してから次のように実行して下さい。
( Written by Tatsuo Ikura )