Perl配列
配列は、スカラー値を格納する順序なしリスト変数です。
配列変数は@で始まります。配列要素にアクセスするには、$+変数名+[インデックス値]の形式で読み込みます。 例は以下の通りです。
#!/usr/bin/perl @hits = (25, 30, 40); @names = ("google", "php", "taobao"); print "$hits[0] = $hits[0]\n"; print "$hits[1] = $hits[1]\n"; print "$hits[2] = $hits[2]\n"; print "$names[0] = $names[0]\n"; print "$names[1] = $names[1]\n"; print "$names[2] = $names[2]\n";
$記号はプログラム内でエスケープされており、そのまま出力できます。
上記のプログラムを実行すると、出力結果は次のようになります:
$hits[0] = 25 $hits[1] = 30 $hits[2] = 40 $names[0] = google $names[1] = php $names[2] = taobao
配列を作成します
配列変数は@記号で始まり、要素は括弧内に配置されます。qwで開始して定義することもできます。配列。
@array = (1, 2, 'Hello'); @array = qw/这是 一个 数组/;
2 番目の配列は qw// 演算子を使用し、スペースで区切られた配列要素を持つ文字列のリストを返します。もちろん、複数の行を使用して配列を定義することもできます:
@days = qw/google taobao ... php/;
次のように、インデックスによって配列に値を割り当てることもできます:
$array[0] = 'Monday'; ... $array[6] = 'Sunday';
配列要素にアクセスする
$ + 変数を使用して配列要素にアクセスする名前 + [インデックス値] 読み取る形式、例は次のとおりです:
@sites = qw/google taobao php/; print "$sites[0]\n"; print "$sites[1]\n"; print "$sites[2]\n"; print "$sites[-1]\n"; # 负数,反向读取
上記のプログラムを実行すると、出力結果は次のようになります:
google taobao php php
配列のインデックス値は 0 から始まります。つまり、0 が最初の要素です。 1 は 2 番目の要素、以下同様です。
負の数値は逆方向から読み取られます。-1 が最初の要素、-2 が 2 番目の要素です。
配列シーケンス番号
Perl は、順番に出力できる配列形式を提供します。形式は 開始値です+ .. + 終了値 、例は次のとおりです:
#!/usr/bin/perl @var_10 = (1..10); @var_20 = (10..20); @var_abc = (a..z); print "@var_10\n"; # 输出 1 到 10 print "@var_20\n"; # 输出 10 到 20 print "@var_abc\n"; # 输出 a 到 z
<p>执行以上程序,输出结果为:</p> <pre> 1 2 3 4 5 6 7 8 9 10 10 11 12 13 14 15 16 17 18 19 20 a b c d e f g h i j k l m n o p q r s t u v w x y z
配列サイズ
配列サイズは、配列内のスカラー コンテキストによって決まります。 :
@array = (1,2,3); print "数组大小: ",标量 @array,"\n";
配列の長さは、要素の数ではなく、配列の物理的なサイズを返します。次の例を見ることができます:
#!/uer/bin/perl @array = (1,2,3); $array[50] = 4; $size = @array; $max_index = $#array; print "数组大小: $size\n"; print "最大索引: $max_index\n";
上記のプログラムを実行すると、出力結果は次のようになります:
数组大小: 51 最大索引: 50
からわかるように。出力結果、配列要素は4つしかありませんが、配列サイズは51です。
配列要素の追加と削除
Perl には、配列要素を追加および削除するための便利な関数がいくつか用意されています。
これまでプログラミングの経験がない場合は、関数とは何なのか疑問に思うかもしれません。実際、前に使用した print は出力関数です。
次の表は、配列でよく使用される演算関数のリストです:
シリアル番号 | タイプと説明 |
---|---|
1 | push @ARRAY, LIST リストの値を末尾に置く配列の |
2 | pop @ARRAY 配列の最後の値をポップして返します |
3 | shift @ARRAY 配列の最初の値をポップして返しますそれ。配列のインデックス値も 1 ずつ減ります。 |
4 | unshift @ARRAY, LIST リストを配列の前に置き、新しい配列の要素の数を返します。 |
例
#!/usr/bin/perl # 创建一个简单是数组 @sites = ("google","php","taobao"); print "1. \@sites = @sites\n"; # 在数组结尾添加一个元素 push(@sites, "baidu"); print "2. \@sites = @sites\n"; # 在数组开头添加一个元素 unshift(@sites, "weibo"); print "3. \@sites = @sites\n"; # 删除数组末尾的元素 pop(@sites); print "4. \@sites = @sites\n"; # 移除数组开头的元素 shift(@sites); print "5. \@sites = @sites\n";
上記のプログラムを実行すると、出力結果は次のようになります:
配列をカット
配列をカットし、カット後の新しい配列を返すことができます:
#!/usr/bin/perl @sites = qw/google taobao php weibo qq facebook 网易/; @sites2 = @sites[3,4,5]; print "@sites2\n";
上記のプログラムを実行すると、出力結果は次のようになります:
weibo qq facebook
配列インデックスには有効なインデックス値を指定する必要があります。これには、正の数値の後に負の数値を指定できます。各インデックス値はカンマで区切られます。
連続インデックスの場合、..を使用して指定範囲を表すことができます:
#!/usr/bin/perl @sites = qw/google taobao php weibo qq facebook 网易/; @sites2 = @sites[3..5]; print "@sites2\n";
上記のプログラムを実行すると、出力結果は次のようになります:
weibo qq facebook
配列要素を置き換えます
Perlでは、splice( ) 関数は、配列要素を置換するために使用されます。構文形式は次のとおりです。
splice @ARRAY, OFFSET [ , LENGTH [ , LIST ] ]
パラメーターの説明:
@ARRAY: 置換される配列。
オフセット: 開始位置。
LENGTH: 置換される要素の数。
リスト: 置換要素のリスト。
次の例は、配列内の6番目の要素から始まる5つの要素を置き換えます:
#!/usr/bin/perl @nums = (1..20); print "替换前 - @nums\n"; splice(@nums, 5, 5, 21..25); print "替换后 - @nums\n";
上記のプログラムを実行すると、出力結果は次のようになります:
替换前 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 替换后 - 1 2 3 4 5 21 22 23 24 25 11 12 13 14 15 16 17 18 19 20
文字列を配列に変換します
文字列をPerlで変換します配列は使用します
split [ PATTERN [ , EXPR [ , LIMIT ] ] ]
パラメータの説明:
PATTERN: 区切り文字、デフォルトはスペースです。
EXPR: 文字列の数を指定します。
LIMIT: このパラメータが指定された場合、配列の要素数が返されます。
例
#!/usr/bin/perl # 定义字符串 $var_test = "php"; $var_string = "www-php-com"; $var_names = "google,taobao,php,weibo"; # 字符串转为数组 @test = split('', $var_test); @string = split('-', $var_string); @names = split(',', $var_names); print "$test[3]\n"; # 输出 com print "$string[2]\n"; # 输出 com print "$names[3]\n"; # 输出 weibo
上記のプログラムを実行すると、出力結果は次のようになります:
o com weibo
配列を文字列に変換します
join() 関数を使用して Perl で配列を文字列に変換します。構文形式は次のとおりです:
join EXPR, LIST
パラメータの説明:
EXPR: コネクタ。
LIST: リストまたは配列。
例
#!/usr/bin/perl # 定义字符串 $var_string = "www-php-com"; $var_names = "google,taobao,php,weibo"; # 字符串转为数组 @string = split('-', $var_string); @names = split(',', $var_names); # 数组转为字符串 $string1 = join( '-', @string ); $string2 = join( ',', @names ); print "$string1\n"; print "$string2\n";
上記のプログラムを実行すると、出力結果は次のようになります:
www-php-com google,taobao,php,weibo
配列のソート
Perlは配列のソートにsort()関数を使用します。構文形式は次のとおりです:
sort [ SUBROUTINE ] LIST
パラメータの説明:
サブルーチン: ルールを指定します。
LIMIT: リストまたは配列。
例
#!/usr/bin/perl # 定义数组 @sites = qw(google taobao php facebook); print "排序前: @sites\n"; # 对数组进行排序 @sites = sort(@sites); print "排序前: @sites\n";
上記のプログラムを実行すると、出力結果は次のようになります:
排序前: google taobao php facebook 排序前: facebook google php taobao
注: 配列のソートは ASCII 数値に基づいています。したがって、配列を並べ替えるときは、並べ替え前に各要素を小文字に変換するのが最善です。
特殊変数: $[
特殊変数 $[ は配列の最初のインデックス値を表し、通常は 0 です。 $[ を 1 に設定すると、配列の最初のインデックス値は次のようになります。は 1、2 番目は 2、というようになります。例は次のとおりです。
#!/usr/bin/perl # 定义数组 @sites = qw(google taobao php facebook); print "网站: @sites\n"; # 设置数组的第一个索引为 1 $[ = 1; print "\@sites[1]: $sites[1]\n"; print "\@sites[2]: $sites[2]\n";
上記のプログラムを実行すると、出力結果は次のようになります。
网站: google taobao php facebook @sites[1]: google @sites[2]: taobao
一般に、特殊変数 $[ の使用はお勧めしません。Perl の新しいバージョンでは、この変数は次のようになります。放棄された。
配列を結合する
以下に示すように、配列の要素はカンマで区切って配列を結合することもできます。
#!/usr/bin/perl @numbers = (1,3,(4,5,6)); print "numbers = @numbers\n";
上記のプログラムを実行すると、出力結果は次のようになります:
numbers = 1 3 4 5 6
複数の配列を配列に埋め込んでメイン配列にマージすることもできます:
#!/usr/bin/perl @odd = (1,3,5); @even = (2, 4, 6); @numbers = (@odd, @even); print "numbers = @numbers\n";
上記のプログラムを実行すると、出力結果は次のようになります:
numbers = 1 3 5 2 4 6
Selectリストから要素を取得します
以下に示すように、リストの後にインデックス値を指定して、指定された要素を読み取ることができます:
#!/usr/bin/perl $var = (5,4,3,2,1)[4]; print "var 的值为 = $var\n"
上記のプログラムを実行すると、出力結果は次のようになります:
var 的值为 = 1
同様に、配列で使用できます .. 指定された範囲の要素を読み取ることができます:
#!/usr/bin/perl @list = (5,4,3,2,1)[1..3]; print "list 的值 = @list\n";
上記のプログラムを実行すると、出力結果は次のようになります:
list 的值 = 4 3 2