配列の最後のインデックス

広告

配列は複数の要素を持っていますが、最後の要素のインデックスを取得する方法を確認します。具体的には次のように記述します。

$#配列名

取得できる値は数値ですので、例えば最後の要素の値を書き換える場合は次のように記述できます。

my @str = ("1月", "2月", "6月");

$str[$#str] = "3月";

この「$#配列名」は要素の最後のインデックスを参照しているわけではなく、最後のインデックスを管理しているものです。その為、「$#配列名」の値を変更すると配列に含まれる最後のインデックスが変更されます。例えば少ない数値を指定すれば、要素数そのものが減少します。増加すれば値が格納されていない要素が追加されます。

my @str = ("1月", "2月", "6月");

$#str = 1;

上記のように設定すると、配列の最後のインデックスが「1」となりますので、インデックスが2の要素はなくなります。

なお配列のインデックスは0から開始されますので配列の要素数と最後の要素のインデックスは次のような関係となります。

要素数 = 最後のインデックス + 1

このように最後のインデックス数から要素数を計算することも出来ます。

サンプルプログラム

では簡単なプログラムで確認して見ます。

test9-1.pl

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

my @str = ("1月", "2月", "6月");

$str[$#str] = "3月";
for (my $i = 0; $i <= $#str; $i++){
  print "$str[$i]¥n";
}

$#str = 1;
for (my $i = 0; $i <= $#str; $i++){
  print "$str[$i]¥n";
}

上記を「test9-1.pl」の名前で保存します(文字コードはUTF-8です)。そしてコマンドプロンプトを起動し、プログラムを保存したディレクトリに移動してから次のように実行して下さい。

配列の最後のインデックス

( Written by Tatsuo Ikura )