気の向くままに辿るIT/ICT/IoT
Perl

Perl 配列の参照設定と追加と削除 array

ホーム前へ次へ
Perlの配列の参照設定と追加と取り出し削除とは?

Perl 配列の参照設定と追加と取り出し削除 array

Perl 配列の参照設定と追加削除

 Perlには格納順序が保証されるアットマーク@で始まる配列とキーとなる文字とペアとなる値のセットで順序が保証されないシャープ#で始まる連想配列(≒ハッシュ)と呼ばれる変数があります。

 この内、順序が保証される@配列では先頭または末尾の要素への操作が可能です。

◆配列要素の追加・取出しと削除/Perl

 Perlには変数の内、配列(@ではじまる数値キー型配列)変数から各値を追加・取出し(削除)する関数unshift/shift/push/popがあります。


・配列の先頭要素の

追加 → unshift
取出し・削除 → shift


・配列の最後尾・末尾要素の

追加 → push
取出し・削除 → pop

 それぞれ


  unshift @abc, $abc;

  $del_top = shift @abc;

  push @abc, $abc;

  $del_tail = pop @abc;

のように利用し、shiftとpopは左辺の変数に取り出した値を結果として返すので格納(取出)すことができ、右辺の配列からは削除され、先頭または末尾から取り出した要素以外の残りが、その配列の要素となります。


※$del_top、@abc、$abc、$del_tailはそれぞれお好きな変数名にする事ができます。
※ shift と pop は、ループで処理済みの値を取り除くだけの場合
 [ shift @abc;][ pop @abc;]として利用する事もあります。

例えば、Perlのルーチン・サブルーチン/メソッドの引数は特殊な変数@_に自動的に格納されるのでshiftを使うと本来は、

 sub foo { 

 $arg = shift @_; 

 ... 

 } 

のようにすることができ、引数があれば@_に格納されることが保証されるので明記せずともよく省略可能で

 $arg = shift; 

 また、Perlには直前の結果を自動的に受け取る特殊な変数$_があり、これを利用する場合には、受け取る変数さえも省略して

 shift; 

 print $_; 

のようにすることもできたりします。

◆配列要素の参照・設定/Perl

 またこの配列変数の値を参照・設定する場合は


・「@abcに曜日を格納」
  @abc = ('日','月','火','水'・・・);

・「@abcの中身を参照」
  $abc[0] には '日'
  $abc[1] には '月'
  $abc[2] には '火'
  $abc[3] には '水'
  ...

のように「$」+配列変数名「abc」+「 [ 」+「数字」+「 ] 」をつけることによって配列変数「@abc」の中身を参照・設定する事ができます。

 この時の配列の中身を「要素」、ブラケット[]を含めた数字は『添え字』といい、配列内の順に0からはじまる数字が対応しています。

 因みにこの「$abc」という名前のスカラー変数があった場合でもPerlは「$abc」と「$abc[0]」等、添え字のついた配列変数とは区別しますので全く無関係な異なるものとみなします。

ホーム前へ次へ