[Perl] 配列の処理 その1

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」 は配列のソートについてです。

このブログについて

このブログは吉祥寺にあるブレインチャイルド株式会社の社員で投稿しています。
業務ではまってしまったことや発見したこと。
自分達で新たに学習してみようと思って勉強し始めたことなどを綴っています。
こんな社員が働いているブレインチャイルドに興味がわいててきたなら、是非お問い合わせください。
会社案内
求人案内
先輩のコメント