配列変数

3-1. 配列変数とは

配列については、c言語と変数の設定方法が異なる。

C言語・・・array[]
Perl ・・・@array

配列変数の名前は、@ (アットマーク) + 英字1文字から始まり、
それ以降は数字、英字およびアンダースコア ( _ ) を用いることが可能となる。
また大文字と小文字が区別されますので、たとえば @a と @A は別物として扱われる。

基本的にPerlでは二次元配列はあまり使わず、一次元配列だけを使います。
(使えることは使えるのですがC言語と違い、少しテクニカルなことが必要になります)


3-2. 配列演算子

配列変数には、数値や文字列を代入することができる。
配列に関しても基本的にはC言語とほぼ同じである。

構文例 意味
@x = (1, 2, 3); @x に 1, 2, 3 をこの順序で代入 (数値)
@y = ("c_prog", "perl"); @y に c_prog と perl をこの順序で代入 (文字列)
@z = ($a, $b, $c); @z に $a, $b, $c をこの順序で代入 (変数)



変数で構成されたリストに対して、リスト値を代入することもできる。

構文例 意味
($x, $y, $z) = (1, 2, 3); $x, $y, $z にそれぞれ 1, 2, 3 を代入
($a, $b) = ("c_prog", "perl"); $a に c_prog を、$b に perl を代入
($a, $b) = ($b, $a); $a と $b の値を入れ換え



配列変数の中の各要素は、$配列変数名 [ 添え字 ] という形式で表すことが出来る。

例)
@prog = ("c", "perl", "java");
print $prog[1];

<出力結果>
perl


また、配列末尾の要素の添え字は、$#変数名 という変数で表すことができる。

例)
@prog = ("c", "perl", "java");
$num = $#prog + 1;
print "この配列の要素は$num個あります。";

<出力結果>
この配列の要素は3個あります。


これを利用することで配列の要素数を処理に適応させることが可能。
また、配列の個数は、左辺のスカラー変数に代入することも出来る。

例)
@prog = ("c", "perl", "java");
$num = @prog;
print "この配列の要素は$num個あります。";

<出力結果>
この配列の要素は3個あります。



3-3. 配列関数

perlには配列を操作するための関数として、複数の関数が用意されている。
これらの関数を用いることで配列の処理が容易になる。

関数 意味
push 配列の末尾へ要素を追加
pop 配列の末尾の要素を削除
unshift 配列の先頭へ要素を追加
shift 配列の先頭の要素を削除
reverse 配列の順序を逆順にする
sort 配列の順序をソートする
chomp 配列の要素に含まれる改行文字を削除する



(chompはスカラー変数にも使用可能)

  • push (配列の末尾へ要素を追加する)

    例)
    @prog = ("c", "perl", "java");
    push(@prog, "c++");
    print "@prog";

    <出力結果>
    c perl java c++


  • pop (配列の末尾の要素を削除する)

    例)
    @prog = ("c", "perl", "java");
    pop(@prog);
    print "@prog";

    <出力結果>
    c perl


  • unshift (配列の先頭へ要素を追加する)

    例)
    @prog = ("c", "perl", "java");
    unshift(@prog, "c++");
    print "@prog";

    <出力結果>
    c++ c perl java


  • shift (配列の先頭の要素を削除する)

    例)
    @prog = ("c", "perl", "java");
    shift(@prog);
    print "@prog";

    <出力結果>
    perl java


  • sort (配列の順序をソートする)

    例)(昇順)
    @array = (3, 1, 5, 4, 2);
    @array = sort { $a <=> $b } (@array);
    print "@array";

    <出力結果>
    1 2 3 4 5

    例)(降順)
    @array = (3, 1, 5, 4, 2);
    @array = sort { $b <=> $a } (@array);
    print "@array";

    <出力結果>
    5 4 3 2 1


  • chomp (配列の要素に含まれる改行文字を削除する)

    例)
    @prog = ("c\n", "perl\n", "java\n");
    chomp(@prog)
    print "@prog";

    <出力結果>
    c perl java



    BACK TO TOP