KAIHATSUGIKEN GROUP

PERL PROGRAMMING LANGUAGE



************************************************************************************
22 配列操作
****************
配列はスカラー変数が一列に並んだものなので、一番前と一番後ろがあります。

配列の一番前から取り出すためにはshiftを使います。
配列の一番前に追加するにはunshiftを使います。

配列の一番後ろから要素を取り出すためにはpopを使います。
配列の一番後ろに追加するためにはpushを使います。

配列 @a があります。
$a[0]="a";
$a[1]="b";
$a[2]="c";
$a[3]="d";

$x=shift(@a);を実行すると
$a[0]="b";
$a[1]="c";
$a[2]="d";

となって"a"が取り出されます。

$x=pop(@a);を実行すると

$a[0]="a";
$a[1]="b";
$a[2]="c";

となって"d"が取り出されます。

反対にunshift(@a,1,2);を実行すると

$a[0]="1";
$a[1]="2";
$a[2]="a";
$a[3]="b";
$a[4]="c";

となって配列の前に1,2が追加されます。

同じようにpush(@1,2);を実行すると

$a[0]="a";
$a[1]="b";
$a[2]="c";
$a[3]="1";
$a[4]="2";

となります。

もっと複雑なこともできます。
ほとんど万能なコマンドそれは splice です。

spliceは配列の一部の要素を取り出してその部分に別の要素を入れます。

@party=("Cloud","Barett","Cid","Vincent");
@deleted=splice(@party,1,2,"Tifa","Yuffie","Aerith");

まず1行目の引き数 @party が操作する配列です。
1が取り出す部分の先頭の要素のインデックス
2が取り出す部分の長さです。

気をつけなくてはいけないのは

$party[0] "Cloud"
$party[1] "Barett"
$party[2] "Cid"
$party[3] "Vincent"

となるので $party[1] の"Barett"から二つ分だから
"Barett"と"Cid"になります。

そして その二つは@deleteに代入されます。

(@party,1,2,"Tifa","Yuffie","Aerith")の"Tifa","Yuffie","Aerith"の部分は
取り出された二つの値の部分に入れる要素です。

だから

$party[0] "Cloud"
$party[1] "Tifa"
$party[2] "Yuffie"
$party[3] "Aerith"
$party[4] "Vincent"

と 変化します。
文字列などを取り出してその取り出した部分に何かを入れるときはとても便利です。

******************************************