変数は整理ボックス

変数は整理ボックス

今日は Perl の「配列」について覚えましょう。配列は Perl の「変数」のうちの一つです。「変数」は、プログラムの処理の途中の値を保存しておくための整理ボックスでしたね。これまで、変数として「スカラー変数」と「ハッシュ」を覚えました。今日はその最後の仲間の「配列」がテーマです。

Perl の「ハッシュ」はラベル付きの引き出しのようなものだと例えましたが、配列は、入れ物で例えると「収納ケース」等の長い引き出しに当たります。

「収納ケース」である配列では、一つのケースにたくさんのものが入りますが、順番に出し入れしないと、どこに何が入っているかを探すのがちょっと大変です。

配列を表す Perl の変数記号は「@」です。
Perl の配列は長い収納ケースのようなものです

Perl の配列は長い収納ケースのようなものです


配列の操作方法

では早速、サンプルプログラムを見てみましょう。まずは、少し退屈ですが配列の基本操作を理解するためのプログラムです。

#Perl の配列の扱いを覚えるためのプログラム

use strict;
use warnings;
use utf8;
binmode STDOUT, 'encoding(utf8)'; #Windows の場合は utf8 -> cp932

my @hairetu;
$hairetu[0] = '猫';
$hairetu[1] = 'エンジニア';
$hairetu[2] = 87;

print "配列 @hairetu の 2 番目の要素は $hairetu[1] です。
";
printf ("配列 @hairetu の要素数は %d 個です。
", scalar @hairetu);
print "配列 @hairetu の最後の添字番号は $#hairetu です。
";

出力は以下のようになります。
配列 @hairetu の 2 番目の要素は エンジニア です。
配列 @hairetu の要素数は 3 個です。
配列 @hairetu の最後の添字番号は 2 です。
さあ、ここには色々な要素が詰まっていますね。順番に説明します。

配列の各部の名前

まず、配列は、「スカラー変数をグループにして番号を付けた変数」です。一つの配列に含まれる一つ一つの値の事を配列の「要素」と呼びます。番号は「添字(そえじ)」または「添字番号」と呼びます。

Perl の配列の構成

Perl の配列の構成


添字の使い方

添字は 0 から始まり、いくつでも増やす事ができます。サンプルプログラムでは、手動で添字の 0 から 2 に値を代入していますが、もし途中に欠番があった場合は、自動的にそこに要素が作られます。

例えば以下のようにプログラムの代入部分を変更してみましょう。
my @hairetu;
$hairetu[1] = '猫';
$hairetu[3] = 'エンジニア';
$hairetu[5] = 87;

print "配列 @hairetu の 2 番目の要素は $hairetu[1] です。
";
printf ("配列 @hairetu の要素数は %d 個です。
", scalar @hairetu);
print "配列 @hairetu の最後の添字番号は $#hairetu です。
";

代入の時の添え字番号を変更しただけですが、出力は以下のようになります。
代入した要素の個数は変わっていないのに、要素数は勝手に増えた事になっていますね。
配列 @hairetu の 2 番目の要素は 猫 です。
配列 @hairetu の要素数は 6 個です。
配列 @hairetu の最後の添字番号は 5 です。

配列の要素数を調べる方法

このサンプルプログラムで使っているように、配列の要素の個数は
scalar @配列名
配列の最後の添字番号は
$#配列名
で調べる事ができます。
なお、要素の個数から 1 を引いた値は配列の最後の添字番号に常に一致します。
scalar @配列名 マイナス 1  ←常に等しい→  $#配列名

配列に代入できる値

一つの配列には、どんな値でも好きなように代入できます。サンプルプログラムのように、文字列と数値が混合していても構いません。

>次は: 配列の使いどころ