perlのリストと配列
【環境条件】
Eclipse 4.4(ルナ)
XAMPP 1.8.3
Perlは既にインストール済み
--リスト--
1)リストとは
スカラーに順番をつけて並べたもので、そのリストの中でのスカラーの位置によって自由にアクセスすることができる。
書式
(変数1, 変数2, 変数3, ...) = (値1, 値2, 値3, ...);
サンプル「test01.pl」
use strict;
use warnings;
my ($var1, $var2, $var3);
($var1, $var2, $var3) = ("月曜", "火曜", "水曜");
print "$var1\n";
print "$var2\n";
print "$var3\n";
・実行
月曜
火曜
水曜
2)リストの要素に変数は?
書式
my ($str1, $str2);
my $name = "伊藤";
($str1, $str2) = ($name, "東京都");
・サンプル「test02.pl」
my ($str1, $str2);
my $name = "伊藤";
($str1, $str2) = ($name, "東京都");
print "$str1\n";
print "$str2\n";
・実行
伊藤
東京都
--配列--
1)配列とは
配列は同じような目的で使用される複数の値を管理する場合に使用される
2)書式
my @配列;
$変数[インデックス]=値;
サンプルプ「test03.pl」
use strict;
use warnings;
my @seiseki;
$seiseki[0] = 80;
$seiseki[1] = 75;
$seiseki[2] = 69;
for (my $i = 0; $i
--演算子--
1)qw演算子
一覧の文字列を空白文字を区切りとして分割したリストを返してくれます
書式
qw/ 対象となる文字列 /
サンプルプ「test06.pl」
use strict;
use warnings;
my @name = qw/ 伊藤 工藤 山田 /;
for (my $i = 0; $i < 3; $i++){
print "$name[$i]\n";
}
・実行
伊藤
工藤
山田
2)範囲演算子
書式
my @count = (開始数..終了数);
サンプルプ「test07.pl」
use strict;
use warnings;
my @num = (10..14, 20);
my $count = @num;
for (my $i = 0; $i < $count; $i++){
print "$num[$i]\n";
}
・実行
10
11
12
13
14
20
3)配列要素の確認
書式
my @array = ("要素1", "要素2");
my $length = @array;
サンプルプ「test08.pl」
use strict;
use warnings;
my @array = ("1月", "2月");
my $length = @array;
print "要素数 $length\n";
print @array;
・実行
要素数 2
1月2月
4)配列要素の最後を書き換える
「$#配列名」→配列に含まれる最後のインデックスが変更されます
サンプルプ「test09.pl」
use strict;
use warnings;
my @str = ("1月", "2月", "6月");
$str[$#str] = "3月";
for (my $i = 0; $i <= $#str; $i++){
print "$str[$i]\n";
}
・結果
1月
2月
3月
5)文字列中に含まれる配列の変数展開
サンプルプ「test10.pl」
my @name = ("加藤", "山田", "林");
print "登録されているのは @name です\n";#→変換される
print '登録されているのは @name です';#→ダメ
print "\n";
$" = ",";#→特別変数「$"」は区切り文字を決める時に使う
print "登録されているのは @name です\n";
・結果
登録されているのは 加藤 山田 林 です
登録されているのは @name です
登録されているのは 加藤,山田,林 です
6)配列と繰り返し処理・・
for文
my @array = ("加藤", "山田", "林");
for (my $i = 0; $i <= $#array; $i++){
print "$array[$i]¥n";
}
または
foreach文
my @name = ("加藤", "山田", "林");
foreach (@name){
print "$_\n";
}
・結果
加藤
山田
林