この章では配列について説明します。
普通の$bookのような変数は1つしかデータを入れることができません。
つまり、変数は他のデータを入れようとするとデータが上書きされてしまいます。
それに対して配列は複数のデータをまとめて入れることができます。
複数のデータを扱う場合、変数では以下のように別々の変数名でそれぞれのデータを入れなければいけません。
この例のように同じ目的で使用するデータは1つにまとめてしまい、1つの配列で複数のデータを管理できると便利です。
このような時に配列を使用します。
そして右辺はカッコの中をカンマで区切って要素を入力していきます。
例えば
添え字とはデータが保管してある場所の概念で、0から番号が付けられていきます。
例えばコインロッカーには番号が付いていますが、番号が付いているからこそ、どこに自分の荷物があるのか分かりますが、これと同じで配列のデータは添え字で管理します。
リストの中の個別のデータを指し示すためには@animal[0]ではなく$animal[0]と書きます。
つまり、先頭の記号は@ ではなく$です。
例えば「print $animal[0];」で出力すると「猫」が出力できます。
配列の一番先頭のデータに対応する添え字は1ではなく0です。
では
qw演算子の中の文字列はシングルクォートで囲まれたものとみなされるので、文字列を囲う必要はありません。
@animal1と@animal2のリストから、新しい配列@animal3
を作成しています。
結果は
以下の例のように@animal3を作成した後に@animal2に龍を加えても、@animal3には影響がありません。
結果は変わらず「猫 犬 ライオン 象 ネズミ コアラ ネッシー」です。
リストの中にある「..」を範囲演算子と言います。
例えば(1..100)は1から100までを意味しています。
実際、1から100までをリストに書いていくことは効率が良くないので、このような場面で範囲演算子を使用します。
2つの配列の対応関係を図にしたので参考にしてみてください。
この構文であれば右辺のリストの要素を一気に左辺の変数に代入することが出来ます。
右辺のリストの要素数のほうが、左の変数より多い場合は、余った値は捨てられます。
では例をみてみましょう。
この例の場合は余った狸は捨てられます。
逆に右辺のリストの要素数のほうが、左の変数より少ない場合は余った変数には未定義値であるundefが代入されます。
undefとは変数などが未定義な状態を言います。
undefは何も入っていないのでprintで出力しても画面には現れません。
結果は「猫,犬,ライオン」です。
この例はリストを使った以下の方法と同じ意味です。
これで古い要素である猫、犬が上書きされて新しいデータであるキリン、パンダに上書きされます。
以下の通り、添え字に相当するデータを取り出すことが出来ます。
次は配列全体の要素を出力する方法について説明します。
print $animal[1];
print $animal[2];
と出力していましたが、配列の要素を一気にすべてを出力させたい場合には以下のように記述します。
結果は以下のようになります。
ダブルクォートで囲まないとデータ間にスペースが生まれないので、連なって出力されます。
空にしますとそれ以降は出力することはできません。