Perl入門
> 第3章 リストと配列
第3章 リストと配列
3-1. リストと配列とは
リスト
とは、スカラーに順番をつけて並べたもので、そのリストの中でのスカラーの位置によって自由にアクセスすることができます。そして、この
リスト
を変数にしたものを、
配列
といいます。
配列
の名前は、@ (アットマーク) + 英字1文字から始まり、それ以降は数字、英字およびアンダースコア ( _ ) を用いることができます。また大文字と小文字が区別されますので、たとえば
@a
と
@A
は別物として扱われます。
変数名に使用できる文字
@abc123
○
変数名として使用可能。
@123abc
×
数字で始まることはできない。
@abc_123
○
アンダースコアは使用可能。
@abc-123
×
ハイフンは使用することはできない。
3-2. 配列演算子
配列には、数値や文字列を代入することができます。
構文例
意味
@x = (1, 2, 3);
@x に 1, 2, 3 をこの順序で代入 (数値)
@y = ("apple", "orange");
@y に apple と orange をこの順序で代入 (文字列)
@z = ($a, $b, $c);
@z に $a, $b, $c をこの順序で代入 (変数)
変数で構成されたリストに対して、リスト値を代入することができます。
構文例
意味
($x, $y, $z) = (1, 2, 3);
$x, $y, $z にそれぞれ 1, 2, 3 を代入
($a, $b) = ("banana", "melon");
$a に banana を、$b に melon を代入
($a, $b) = ($b, $a);
$a と $b の値を入れ換え
配列の中の各要素は、
$配列名 [ 添え字 ]
という形式で表すことができます。
配列の添え字は
0
から始まります。したがって、配列の1番目から3番目の要素にアクセスするには、0 から 2 までを添え字として使用することになります。
以下の表の場合、パターン1とパターン2は、まったく同じ意味になります。
パターン1
@fruit = ("apple", "orange", "banana");
パターン2
$fruit[0] = "apple";
$fruit[1] = "orange";
$fruit[2] = "banana";
配列の各要素には、添え字を指定することで、以下のようにしてアクセスすることができます。
@fruit = ("apple", "orange", "banana");
print "$fruit[1]
\n
";
<出力結果>
orange
配列末尾の要素の添え字は、
$#変数名
という変数で表すことができます。
@fruit = ("apple", "orange", "banana");
$num = $#fruit + 1;
print "
この配列の要素は$num個あります。\n
";
<出力結果>
この配列の要素は3個あります。
配列の個数は、左辺のスカラー変数に代入することができます。
@fruit = ("apple", "orange", "banana");
$num = @fruit;
print "
この配列の要素は$num個あります。\n
";
<出力結果>
この配列の要素は3個あります。
また、以下のようにして、配列に代入し要素を追加することができます。
@fruit = ("apple", "orange", "banana");
@fruit = (@fruit, "grape");
print "@fruit
\n
";
<出力結果>
apple orange banana grape
3-3. 配列関数
配列を操作するための関数として、次のような関数が用意されています。
関数
意味
push
配列の末尾へ要素を追加
pop
配列の末尾の要素を削除
unshift
配列の先頭へ要素を追加
shift
配列の先頭の要素を削除
reverse
配列の順序を逆順にする
sort
配列の順序をソートする
push
配列の末尾へ要素を追加します。
@char = ("A", "B", "C");
push(@char, "D");
print "@char
\n
";
<出力結果>
A B C D
pop
配列の末尾の要素を削除します。
@char = ("A", "B", "C");
pop(@char);
print "@char
\n
";
<出力結果>
A B
unshift
配列の先頭へ要素を追加します。
@char = ("A", "B", "C");
unshift(@char, "D");
print "@char
\n
";
<出力結果>
D A B C
shift
配列の先頭の要素を削除します。
@char = ("A", "B", "C");
shift(@char);
print "@char
\n
";
<出力結果>
B C
reverse
配列の順序を逆順にします。
@char = ("A", "B", "C");
@char = reverse(@char);
print "@char
\n
";
<出力結果>
C B A
sort
文字列、数値および昇順、降順によって4パターンのソートが存在します。
(1) 文字列としてソート(昇順)
@char = ("C", "A", "D", "B");
@char = sort(@char);
print "@char
\n
";
<出力結果>
A B C D
(2) 文字列として逆ソート(降順)
@char = ("C", "A", "D", "B");
@char = sort { $b cmp $a } (@char);
print "@char
\n
";
<出力結果>
D C B A
(3) 数値としてソート(昇順)
@char = (3, 1, 4, 2);
@char = sort { $a <=> $b } (@char);
print "@char
\n
";
<出力結果>
1 2 3 4
(4) 数値として逆ソート(降順)
@char = (3, 1, 4, 2);
@char = sort { $b <=> $a } (@char);
print "@char
\n
";
<出力結果>
4 3 2 1
戻る