■リストと配列

リストとはスカラーデータに順番を付けて並べたものの集合です。
配列はリストを値に持つ一種の変数です。
配列の要素はそれぞれ独立したスカラ−の値を持つスカラー変数になっています。

($a, 17)    # 2つの値:現在の値は$aと17
()        # 空リスト(要素の個数0)
(1..5)      # (1, 2, 3, 4, 5)と同じ

#!/bin/perl

for $i (1..5) {
print $i . " ";
}
print "\n";

for $n (1.2..6.2) {
printf "%f ", $n;
}
print "\n";

#@list = ("This", "is", "a", "Test."); 	# リストの定義
@list = qw(This is a Test.); 		# 単語のクォート構文
for($i=0; $list[$i]; $i++) {
	print "$list[$i] ";
}
print "\n";

pop(@list);		# 配列の最後の要素を取り出す
push(@list, "Program."); 	# 配列の最後の要素に文字列を追加
for($i=0; $list[$i]; $i++) {
	print "$list[$i] ";
}

実行結果

1 2 3 4 5
1.000000 2.000000 3.000000 4.000000 5.000000 6.000000
This is a Test.
This is a Program. 

 

配列の要素のアクセス

#!/bin/perl

# 配列内に配列を埋め込む
@lst1 = qw(Yes No);
@lst2 = (1, 2, @lst1, 3, 4);
STDOUT(@lst2);

# 配列のコピー
@lst2 = @lst1;
STDOUT(@lst2);

# 配列にひとつのリテラル定数を渡すとひとつの要素を持った配列になる
@lst2 = 1;
STDOUT(@lst2);

# 2つの要素を持つ配列をスワップ
@lst2 = qw(A B);
($a, $b) = @lst2;
@lst2 = ($b, $a);
STDOUT(@lst2);

# 先頭の要素を末尾に入れ替える
@lst2 = qw(A B C D E F);
@lst2 = ArrraySwap(@lst2);
STDOUT(@lst2);

# 配列の要素へのアクセス
@lst2[1, 2, 4] = @lst2[3, 5, 1]; 	# 配列の部分集合から配列操作を行っているため@がつく

@str2 = (1, 2, 3);
$a = 2;
$b = $str2[$a-1];
($c) = (7, 8, 9)[$a];
print "$a $b $c";


exit(0);

sub STDOUT {
	@sub_lst = @_;
	for ($i = 0; $sub_lst[$i]; $i++) {
		print "$sub_lst[$i] ";
	}
	print "\n";
}

sub ArrraySwap {
	($sub_i, @sub_lst) = @_;
	@tmp_lst = (@sub_lst, $sub_i);
	return @tmp_lst
}

実行結果

1 2 Yes No 3 4
Yes No
1
B A
B C D E F A
2 2 9