sekです。
他の言語でもおなじみの配列ですが、Java・ActionScript 等の配列とは一味違う使い方があり、面白いので紹介します。
初めに配列の説明を簡単に・・・・
配列とは、スカラー変数の集合に順序を付けて並べた値を格納する変数のことで、「@変数名」で表せます。
例えば、6種類のビタミンをまとめて格納する配列変数を @vitamins として作成し、格納されたビタミンの最初から3つ(vitaminA, vitaminB1, vitaminC) を添え字を指定して表示するソースは以下の様に書きます。
@vitamins = ("vitaminA", "vitaminB1", "vitaminC", "vitaminD", "vitaminE", "vitaminK"); print $vitamins[0]; print $vitamins[1]; print $vitamins[2]; # "vitaminAvitaminB1vitaminC" が表示されます
ちなみに、上記の配列は qw(中身をシングルクォートで囲まれた文字列として扱う) を使ってもう少し簡単に書けます。
@vitamins = qw( vitaminA vitaminB1 vitaminC vitaminD vitaminE vitaminK );
ここからは、Perl 配列処理の中で特徴的なものとして、以下の3点についてサンプルソースを見ていきます。
(1) 配列末尾のインデクス取得
(2) 配列末尾の要素取得
(3) pop/push演算子と shift/unshift演算子について
(1) 配列末尾のインデクスを調べるには 「$#配列名」 を使用する
@vitamins = qw( vitaminA vitaminB1 vitaminC vitaminD vitaminE vitaminK ); $end_index = $#vitamins; print $vitamins[$end_index]; # "vitaminK" が表示されます
(2) 配列の添え字に 「-(マイナス)」 を使用できる
例えば、配列の最後の要素の値を取得するには添え字に 「-1」 を指定します。
@vitamins = qw( vitaminA vitaminB1 vitaminC vitaminD vitaminE vitaminK ); print $vitamins[-1]; # "vitaminK" が表示されます
(3) 配列の末尾に対して処理をするなら「pop/push」、 配列の先頭に対して処理をするなら「shift/unshift」 を使用する
pop演算子は、配列の末尾の値を取り出します。取り出した値は配列からは取り除かれます。
逆に、push演算子は配列の末尾に指定した値を追加します。
@vitamins = qw( vitaminA vitaminB1 vitaminC vitaminD vitaminE vitaminK ); $val = pop @vitamins; print $val; # "vitaminK" が表示されます push @vitamins, 'vitaminM'; print $vitamins[-1]; # "vitaminM" が表示されます
上記の pop/push 演算子と同じ働きだけれども、処理のターゲットを配列の先頭に変えた演算子が shift/unshift 演算子になります。
@vitamins = qw( vitaminA vitaminB1 vitaminC vitaminD vitaminE vitaminK ); $val = shift @vitamins; print $val; # "vitaminA" が表示されます unshift @vitamins, 'vitaminM'; print $vitamins[0]; # "vitaminM" が表示されます
次回の 「配列の処理 その2」 は配列のソートについてです。