配列を初期化する

配列を宣言すると配列の要素に値を格納することができるようになりますが、配列の宣言と同時に要素への値の格納をすることができます。宣言と同時に値を格納することを配列の初期化と言ったりします。ここでは Perl で配列の初期化を行う方法方法について解説します。

(Last modified: )

配列を初期化する

配列を宣言すると同時に要素に値を格納することを配列の初期化といいます。配列を初期化するには次の書式を使います。

my @配列名 = (値1, 値2, ... , 値n);

配列の要素に格納する値をカンマ( , )で区切って並べ、全体を括弧 () で囲んで指定します。この値の指定方法はリストそのものです。つまり配列を初期化する時にはリストを指定するということになります。

次の例を見てください。

my @name = ("伊藤", "加藤", "山田");

配列の宣言と同時に要素に値を格納する場合は、格納される要素はインデックスが 0 のものから順番に格納されていきます。よって次のように記述した場合とほぼ同じです。

my @name;
$name[0] = "伊藤";
$name[1] = "加藤";
$name[2] = "山田";

配列の宣言時以外にリストを代入する

配列を宣言するとき以外にも配列に対してリストを代入することができます。

my @name;
@name = ("伊藤", "加藤", "山田");

このとき注意して頂きたいのは既に配列にいくつかの要素が含まれている時に配列にリストを代入すると、既にある要素はすべてクリアされた上で新しくリストが配列に代入されるということです。次の例を見てください。

my @num;
$num[0] = 10;
$num[1] = 9;
$num[2] = 24;

@num = (3, 7);

配列を宣言したあとインデックス 0 から 2 までの要素に値を格納しています。そのあとで配列に対して 2 つの要素を持つリストを代入しています。この場合、配列の要素はいったんすべて削除された上で、インデックスが 0 と 1 の要素に対して値が格納されます。 0 と 1 のインデックスの要素だけが上書きされるのではなく、いったんすべての要素を削除した上でリストの要素の数だけ配列の要素に値が格納される点に注意してください。

もしも 0 番目と 1 番目の要素だけリストを使って書き換えたい場合には、配列に対してリストを格納するのではなく、変数の場合と同じく次のように記述します。

my @num;
$num[0] = 10;
$num[1] = 9;
$num[2] = 24;

($num[0], $num[1]) = (3, 7);

この場合はインデックス 2 の要素は元のままの値が格納されています。

配列の要素をリセットする

配列の要素をいったんすべて削除してリセットしたい場合は、配列に対して空のリストである () を代入して下さい。

my @num;
$num[0] = 10;
$num[1] = 9;
$num[2] = 24;

@num = ();

これで配列の要素がすべてクリアされます。

サンプルコード

それでは簡単なサンプルを作成します。

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

my @name = ("伊藤", "工藤", "山田");
$name[3] = "高橋";
$name[1] = "安藤";

for (my $i = 0; $i < @name; $i++){
  print "$name[$i]\n";
}

print "----\n";

@name = ("長谷部", "吉本");

for (my $i = 0; $i < @name; $i++){
  print "$name[$i]\n";
}

テキストエディタでプログラムを記述したあと sample.pl という名前で保存します。(文字コードは UTF-8 です)。コマンドプロンプトを起動し、プログラムを保存したディレクトリへ移動したあとで次のように実行します。

perl sample.pl

次のように実行結果が表示されます。

配列を初期化する(1)

今回はいったんリストを使って配列を初期化したあと、配列の要素に新しい値を追加したり既存の要素の値を変更してから一度配列の各要素の値を取得して画面に出力します。そのあとで、再び配列に対してリストを代入し、そのあとで配列の各要素の値を取得して画面に出力します。

なお Perl では配列変数名を参照すると配列の要素数を取得することができます。配列の要素数を取得する詳しい解説については「配列の要素数を取得する」を参照されてください。

-- --

Perl で配列の初期化を行う方法方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。