|
|
|||||||||||||||||||||||||||||
|
Perl関数リファレンス 配列_リストに関する関数 |
H.Kamifuji . |
|
Perlの組み込み関数の中で配列/リストに関係する関数のリファレンスです。 ※配列やリストに関しては「リストと配列」を参照して下さい。 当ページでは、Linux CentOS7 の Gnome で動作テストしています。 |
|
|
|
「push」関数は対象となる配列の最後に要素を追加します。 push push(ARRAY, LIST)配列の最後にリストを追加します。 パラメータ: ARRAY 対象の配列 LIST 追加するリスト 戻り値: リストを追加後の配列の要素数 1番目の引数には対象となる配列が格納された配列変数を指定します。2番目の引数には追加する単独の要素、又はリストを指定します。 具体的には次のように記述します。
my @month = ("月曜", "火曜", "水曜");
push(@month, "木曜");
push(@month, ("金曜", "土曜", "日曜"));
最初は単独の文字列を追加し、次に3つの要素を持つリストを追加しています。では簡単なプログラムで確認して見ます。 test1-1.pl サンプルプログラム下記のサンプルを実行してみよう。
# push関数
#
use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';
my @month = ("月曜", "火曜", "水曜");
push(@month, "木曜");
for (my $i = 0; $i <= $#month; $i++){
print "$month[$i]\n";
}
print "\n";
push(@month, ("金曜", "土曜", "日曜"));
for (my $i = 0; $i <= $#month; $i++){
print "$month[$i]\n";
}
上記を「test1-1.pl」の名前で保存してから次のように実行して下さい。![]() Linux 環境での実行結果は、下記です。シフトJIS で出力されるので nkf -w で UTF-8 に変換しています。 [xxxxxxxx@dddddddddd Array]$ perl test1-1_u.pl | nkf -w 月曜 火曜 水曜 木曜 月曜 火曜 水曜 木曜 金曜 土曜 日曜 [xxxxxxxx@dddddddddd Array]$ |
|
「pop」関数は対象となる配列の最後の要素を取り出します。 pop pop([ARRAY])配列の最後の要素を取り出します。要素数は1つ減ります。 パラメータ: ARRAY 対象の配列 戻り値: 配列の最後の要素 1番目の引数には対象となる配列が格納された配列変数を指定します。配列に含まれている最後の要素を取得し、要素数を1つ減らします。もし要素が含まれていなかった場合はundefが返されます。 引数が省略された場合、メインルーチンで使用された場合には「@ARGV」が使用され、サブルーチンで使用された場合には「@_」が使用されます。 具体的には次のように記述します。
my @month = ("月曜", "火曜", "水曜");
my $val = pop(@month);
では簡単なプログラムで確認して見ます。test2-1.pl サンプルプログラム下記のサンプルを実行してみよう。
# pop関数
#
use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';
my @month = ("月曜", "火曜", "水曜");
print "配列に含まれる要素:\n";
for (my $i = 0; $i <= $#month; $i++){
print "$month[$i]\n";
}
my $val = pop(@month);
print "\n取得した要素:\n";
print "$val\n";
print "残りの要素:\n";
for (my $i = 0; $i <= $#month; $i++){
print "$month[$i]\n";
}
上記を「test2-1.pl」の名前で保存してから次のように実行して下さい。![]() Linux 環境での実行結果は、下記です。シフトJIS で出力されるので nkf -w で UTF-8 に変換しています。 [xxxxxxxx@dddddddddd Array]$ perl test2-1_u.pl | nkf -w 配列に含まれる要素: 月曜 火曜 水曜 取得した要素: 水曜 残りの要素: 月曜 火曜 [xxxxxxxx@dddddddddd Array]$ |
|
「unshift」関数は対象となる配列の先頭に要素を追加します。 unshift unshift(ARRAY, LIST)配列の先頭にリストを追加します。 パラメータ: ARRAY 対象の配列 LIST 追加するリスト 戻り値: リストを追加後の配列の要素数 1番目の引数には対象となる配列が格納された配列変数を指定します。2番目の引数には追加する単独の要素、又はリストを指定します。 具体的には次のように記述します。
my @city = ("東京", "大阪");
unshift(@city, "名古屋");
unshift(@city, ("札幌", "福岡"));
では簡単なプログラムで確認して見ます。test3-1.pl サンプルプログラム下記のサンプルを実行してみよう。
# unshift関数
#
use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';
my @city = ("東京", "大阪");
unshift(@city, "名古屋");
for (my $i = 0; $i <= $#city; $i++){
print "$city[$i]\n";
}
print "\n";
unshift(@city, ("札幌", "福岡"));
for (my $i = 0; $i <= $#city; $i++){
print "$city[$i]\n";
}
上記を「test3-1.pl」の名前で保存してから次のように実行して下さい。![]() Linux 環境での実行結果は、下記です。シフトJIS で出力されるので nkf -w で UTF-8 に変換しています。 [xxxxxxxx@dddddddddd Array]$ perl test3-1_u.pl | nkf -w 名古屋 東京 大阪 札幌 福岡 名古屋 東京 大阪 [xxxxxxxx@dddddddddd Array]$ |
|
「shift」関数は対象となる配列の先頭の要素を取り出します。 shift shift(ARRAY)配列の先頭の要素を取り出します。要素数は1つ減ります。 パラメータ: ARRAY 対象の配列 戻り値: 配列の先頭の要素 1番目の引数には対象となる配列が格納された配列変数を指定します。配列に含まれている先頭の要素を取得し、要素数を1つ減らします。もし要素が含まれていなかった場合はundefが返されます。 具体的には次のように記述します。
my @city = ("東京", "大阪");
my $val = shift(@month);
では簡単なプログラムで確認して見ます。test4-1.pl サンプルプログラム下記のサンプルを実行してみよう。
# shift関数
#
use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';
my @city = ("東京", "大阪");
print "配列に含まれる要素:\n";
for (my $i = 0; $i <= $#city; $i++){
print "$city[$i]\n";
}
my $val = shift(@city);
print "\n取得した要素:\n";
print "$val\n";
print "残りの要素:\n";
for (my $i = 0; $i <= $#city; $i++){
print "$city[$i]\n";
}
上記を「test4-1.pl」の名前で保存してから次のように実行して下さい。![]() Linux 環境での実行結果は、下記です。シフトJIS で出力されるので nkf -w で UTF-8 に変換しています。 [xxxxxxxx@dddddddddd Array]$ perl test4-1_u.pl | nkf -w 配列に含まれる要素: 東京 大阪 取得した要素: 東京 残りの要素: 大阪 [xxxxxxxx@dddddddddd Array]$ |
|
「delete」関数は指定された配列要素を削除します。 delete delete(EXPR)引数に指定された配列要素を削除します。 パラメータ: EXPR 配列の要素 戻り値: 削除された値 1番目の引数には対象となる配列の要素を指定します。配列の要素は「$ハッシュ名[インデックス]」で表されます。指定したインデックスが存在した場合、要素は削除されます。 配列の場合には最後の要素が削除された場合には要素が1つ減りますが、最後で無い要素が削除された場合には該当のインデックスの値が未定義値(undef)に設定されます(要素が一つずつずれるわけではない)。 具体的には次のように記述します。
my @city = ("東京", "大阪", "名古屋");
delete($city[1]);
※delete関数はハッシュ要素に対して使用できます。詳しくは「delete関数」を参照して下さい。では簡単なプログラムで確認して見ます。 test5-1.pl サンプルプログラム下記のサンプルを実行してみよう。
# delete関数
#
use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';
my @city = ("東京", "大阪", "名古屋");
my $val = delete($city[2]);
print "削除された値:$val\n\n";
print "残っている要素\n";
foreach my $i(0 .. $#city){
print "$city[$i]\n";
}
上記を「test5-1.pl」の名前で保存してから次のように実行して下さい。![]() Linux 環境での実行結果は、下記です。シフトJIS で出力されるので nkf -w で UTF-8 に変換しています。 [xxxxxxxx@dddddddddd Array]$ perl test5-1_u.pl | nkf -w 削除された値:名古屋 残っている要素 東京 大阪 [xxxxxxxx@dddddddddd Array]$ |
|
「reverse」関数はリスト又は配列の要素を逆順に並べたものを返します。 reverse reverse(LIST)引数に指定したリストに含まれる要素を逆に並べたリストを返します。 パラメータ: LIST 対象となるリスト(又は配列) 戻り値: 並び替えられたリスト 1番目の引数には対象となるリスト又は配列を指定します。指定したリストに含まれる要素を後ろから順に並べたリストを返します。元のリストは変更されませんので、関数の戻り値を別の配列などに格納して使用します。 具体的には次のように記述します。
my @city = ("東京", "大阪", "名古屋");
my @rcity = reverse(@city);
では簡単なプログラムで確認して見ます。test6-1.pl サンプルプログラム下記のサンプルを実行してみよう。
# reverse関数
#
use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';
my @city = ("東京", "大阪", "名古屋");
foreach my $var(@city){
print "$var\n";
}
print "\n逆に並べ替えます\n\n";
my @rcity = reverse(@city);
foreach my $var(@rcity){
print "$var\n";
}
上記を「test6-1.pl」の名前で保存してから次のように実行して下さい。![]() Linux 環境での実行結果は、下記です。シフトJIS で出力されるので nkf -w で UTF-8 に変換しています。 [xxxxxxxx@dddddddddd Array]$ perl test6-1_u.pl | nkf -w 東京 大阪 名古屋 逆に並べ替えます 名古屋 大阪 東京 [xxxxxxxx@dddddddddd Array]$ |
|
|