リストを作成する

数値や文字列は 1 つの値を表しますが、リストは複数の値が順番に並んだ状態を表します。複数の値をまとめて管理したい場合に便利です。ここでは Perl でリストを作成する方法について解説します。

(Last modified: )

リストを作成する

今まで使用してきた値は数値であっても文字列であっても 1 つの値でした。例えば数値の 10 や文字列の "Apple" などです。

10
"Apple"

上記の場合は 10 と言う 1 つの値を変数 $var に格納しています。

リストというのは複数の値を表すのに使用されます。リストは次のように記述します。

(値1, 値2, 値3, ...)

リストでは複数の値をカンマで区切って並べ括弧 () で囲います。値はいくつ並べても構いません。リストに含まれる各値は要素とも呼ばれます。

例えば数値の 8, 12, 7 と言う 3 つの数値を持つリストは次のように記述できます。

(8, 12, 7)

同じように文字列の "男性", "女性" と言う 2 つの値を持つリストは次のように記述できます。

("男性", "女性")

リストは順番を持っています。値が記述された順に並べられていると考えて下さい。上の例で言えば "男性" の次の値は "女性" であり、 "女性" の前の値は "男性" です。

リストは例えば配列の初期化を行うときに値をまとめて指定する場合に利用できます。

my @nameArray = ('Suzuki', 'Honda', 'Okada');

リストの各値をそれぞれ変数に格納する

数値や文字列を変数に格納することができますが、リストの各値をそれぞれ変数に格納することができます。リストの値の数だけ変数を用意する必要があります。次のように記述します。

(変数1, 変数2, 変数3, ...) = (値1, 値2, 値3, ...);

格納する変数もリストと同じようにカンマで区切って並べ括弧 () で囲います。これは次のように記述した場合と同じです。

変数1 = 値1;
変数2 = 値2;
変数3 = 値3;

実際には次のように記述します。

my ($var1, $var2, $var3);
($var1, $var2, $var3) = ("月曜", "火曜", "水曜");
サンプルコード

それでは簡単なサンプルを作成します。

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

my ($var1, $var2, $var3);

($var1, $var2, $var3) = ("月曜", "火曜", "水曜");

print "$var1\n";
print "$var2\n";
print "$var3\n";

テキストエディタでプログラムを記述したあと sample.pl という名前で保存します。(文字コードは UTF-8 です)。コマンドプロンプトを起動し、プログラムを保存したディレクトリへ移動したあとで次のように実行します。

perl sample.pl

次のように実行結果が表示されます。

リストを作成する(1)

3 つの値を持つリストを作成し、各値をそれぞれ変数に格納したあとで画面に出力しました。

リストの要素に変数を記述する

リストを作成するときに、要素として数値や文字列などの値だけでなく変数や式を記述することができます。次の例を見てください。

my ($str1, $str2);
my $name = "伊藤";

($str1, $str2) = ($name, "東京都");

この場合、リストの 1 番目の要素は変数 $name です。要素として変数を記述した場合には、変数に格納されていた値があたかも値として記述されているように扱われます。よって変数 $str1 には変数 $name に格納されている "伊藤" が格納されます。

リストの要素には式を記述することもできます。次の例を見てください。

my ($price, $num, $total);

($price, $num, $total) = (8, 50, 8 * 50);

この場合、リストの 3 番目の要素は 8 * 50 の演算結果の値が記述されたものとして扱われます。

リストの要素として変数を格納することができるので次のような記述も可能です。

my $num1 = 30;
my $num2 = 20;

($num1, $num2) = ($num2, $num1);

この場合は変数 $num1 と変数 $num2 に格納されていた値が入れ替わって格納されます。このとき注意して頂きたいのは変数 $num1 に変数 $num2 が格納された時点で変数 $num1 に格納される値は変化しますが、次に変数 $num2 に格納される変数 $num1 の値は変化する前の値が格納されるという点に注意してください。

サンプルコード

それでは簡単なサンプルを作成します。

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

my ($str, $num);
my $name = "伊藤";
my $point = 7;

($str, $num) = ($name, $point * 10);

print "$str\n";
print "$num\n";

テキストエディタでプログラムを記述したあと sample.pl という名前で保存します。(文字コードは UTF-8 です)。コマンドプロンプトを起動し、プログラムを保存したディレクトリへ移動したあとで次のように実行します。

perl sample.pl

次のように実行結果が表示されます。

リストを作成する(2)

変数を要素に持つリストを作成し、リストの各要素の値をまとめて別の変数に格納しました。

-- --

Perl でリストを作成する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。