Perl 配列の仕組みと使い方のサンプル

Perlの配列の仕組みと使い方のサンプルです。確認環境(Perl 5.26.3)

仕組み 配列とは
作成する 配列を作成する
更新する 配列の末尾に値を追加する
  配列の先頭に値を追加する
  配列の値を更新する
取得する 配列の値をfor文で取得する
ソートする 配列の値をソートする
2次元 二次元配列を作成する

配列とは

@a = ( 値1 , 値2 , 値3 );

上記は複数の値を変数aに代入しています。
この変数aは配列として複数の値を持ちます。

配列の図

  • 1つの変数で複数の値を保持できます。
  • 各項目を要素(element)といいます。
  • 要素の順序をインデックス(添字)で管理します。上記図では[0]、[1]、[2]、[3]がインデックスです。
  • インデックスの先頭は0から始まります。
  • 以下はPerl公式の日本語翻訳サイトの配列のリンクです。
    https://perldoc.jp/docs/perl/5.14.1/perllol.pod

配列を作成する

配列を作成するサンプルです。

#! /usr/bin/perl
use strict;
use warnings;

my @color = ('赤','黄','青');

print ($color[0]); # 赤
print ($color[1]); # 黄
print ($color[2]); # 青

my @a1 = ();

$a1[0] = "白";
$a1[1] = "黒";
print ($a1[0]); # 白
print ($a1[1]); # 黒

5行目は、配列を作成しています。
11行目のように最初は空で後から値を追加することもできます。

配列の末尾に値を追加する

配列の末尾に値を追加するサンプルです。

#! /usr/bin/perl
use strict;
use warnings;

my @color = ("赤","黄","青");

$color[3] = "白";

print ($color[0]); # 赤
print ($color[1]); # 黄
print ($color[2]); # 青
print ($color[3]); # 白

push @color,'黒';

print ($color[4]); # 黒

7行目は、インデックスを指定して値を配列の末尾に追加しています。
14行目は、push関数で値を配列の末尾に追加しています。

配列の先頭に値を追加する

配列の先頭に値を追加するサンプルです。

#! /usr/bin/perl
use strict;
use warnings;

my @color = ("赤","黄","青");

unshift @color,"白";

print ($color[0]); # 白
print ($color[1]); # 赤
print ($color[2]); # 黄
print ($color[3]); # 青

7行目は、unshift関数で配列の先頭に値を追加しています。

配列の値を更新する

配列の値を更新するサンプルです。

#! /usr/bin/perl
use strict;
use warnings;

my @color = ("赤","黄","青");

$color[1] = "オレンジ";

print ($color[0]); # 赤
print ($color[1]); # オレンジ
print ($color[2]); # 青

7行目は、5行目の配列のインデックスの1(黄)を指定しています。更新になり文字が置き換わります。

配列の値をfor文で取得する

配列の値をfor文で取得するサンプルです。

#! /usr/bin/perl
use strict;
use warnings;

my @color = ("赤","黄","青");

for(my $i=0; $i<=$#color;$i++){
	print $color[$i]; # 赤黄青
}

foreach my $c1 (@color){
	print $c1; # 赤黄青
}

7行目は、for文です。条件式の$#colorは2を返します。配列の最後の要素のインデックス値です。
11行目は、foreach文です。配列の値分ループします。

配列の値をソートする

配列の値をソートするサンプルです。

#! /usr/bin/perl
use strict;
use warnings;

my @a1 = (100,2,99);

@a1 = sort{$a <=> $b}@a1;
#@a1 = sort{$b <=> $a}@a1; #降順にする場合

print ($a1[0]); # 2
print ($a1[1]); # 99
print ($a1[2]); # 100

my @a2 = ("da","abb","pccc");

@a2 = sort{$a cmp $b}@a2;
#@a2 = sort{$b cmp $a}@a2; #降順にする場合

print ($a2[0]); # abb
print ($a2[1]); # da
print ($a2[2]); # pccc

5行目は、数値の配列です。
7行目は、昇順でソートをしています。
結果は、2,99,100になります。100,2,99にはなりません。
14行目は、文字列の配列です。
16行目は、昇順でソートをしています。
結果は、先頭の文字のabc順に表示されます。

二次元配列を作成する

二次元配列を作成するサンプルです。

#! /usr/bin/perl
use strict;
use warnings;

my @a = (
	["赤","黄","青"],
	["緑","白","黒"]
);

print ($a[0][0]); # 赤
print ($a[0][1]); # 黄
print ($a[0][2]); # 青
print ($a[1][0]); # 緑
print ($a[1][1]); # 白
print ($a[1][2]); # 黒

#入れ子の構造
my @b = (
	"色の種類",
	["赤","黄","青"],
	["緑","白","黒"]
);

print ($b[0]); # 色の種類
print ($b[1][0]); # 赤
print ($b[1][1]); # 黄
print ($b[1][2]); # 青

5~8行目は、二次元の配列を作成しています。
10~15行目は、インデックス番号を2つ使用して配列の値を参照しています。
18~22行目は、入れ子の構造の配列を作成しています。

関連の記事

Perl if文のサンプル
Perl while文とdo…while文のサンプル
Perl for文 処理を繰り返すサンプル(last/next)

△上に戻る