Perlの配列

Perlの配列

Perlのスカラー値のストレージアレイは、異なるタイプのものとすることができる変数のリストです。
する配列変数@で始まります。アクセスアレイ素子に使用される$フォーマット、以下の実施例を読むために+ +変数名[インデックス]:

#!/usr/bin/perl

@hits = (25, 30, 40);             
@names = ("google", "CodingDict", "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] = CodingDict
$names[2] = taobao

配列を作成します

配列変数に@シンボルスタート、括弧内の要素は、QWは、アレイを定義するために開始することができます。

@array = (1, 2, 'Hello');
@array = qw/这是 一个 数组/;

スペースで区切られた文字列、配列要素のリストを返すQW //演算子を使用して二番目の配列。もちろん、あなたは配列を定義するために複数の行を使用することができます。

@days = qw/google
taobao
...
CodingDict/;

次のようにも、インデックスが配列に割り当てることができます。

$array[0] = 'Monday';
...
$array[6] = 'Sunday';

アクセス配列の要素

変数名$ + +を使用してアクセス・アレイ要素フォーマットを読み取る[インデックス]、以下の例:

@sites = QW / /淘宝CodingDictグーグル。

print "$sites[0]\n";
print "$sites[1]\n";
print "$sites[2]\n";
print "$sites[-1]\n";    # 负数,反向读取

上記のプログラムの実装では、出力は次のようになります。

google
taobao
CodingDict
CodingDict

配列インデックスはそうで最初の要素、第二要素、及びため、すなわち、0から0を開始します。
逆負から読み出し、-1最初の要素のために、第二の要素-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

上記のプログラムの実装では、出力は次のようになります。

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は配列の要素を追加および削除するために、いくつかの便利な機能を提供します。
我々は、使用を印刷する前に、実際には、機能が何であるかを尋ねるかもしれません前のプログラミングの経験をした場合、それは出力関数です。
次の表に、一般的な操作関数配列:

いいえ。 種類と説明
1 プッシュ@ARRAY、LIST

配列の最後に値のリスト

2 ポップ@ARRAY

最後に、ポップアップ値の配列、およびリターンそれ

3 シフト@ARRAY

配列は、最初の値と戻り、それをポップ。配列インデックス値も一桁減少します。

4 アンシフト@ARRAY、LIST

アレイ戻る新しい配列内の要素の数の前のリスト。

#!/usr/bin/perl

# 创建一个简单是数组
@sites = ("google","CodingDict","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";

上記のプログラムの実装では、出力は次のようになります。

1
2
3
4
5

切断配列

私たちは、アレイをカットし、カットの新しい配列を返すことができます。

#!/usr/bin/perl

@sites = qw/google taobao CodingDict weibo qq facebook 网易/;

@sites2 = @sites[3,4,5];

print "@sites2\n";

上記のプログラムの実装では、出力は次のようになります。

weibo qq facebook

有効な配列インデックス値インデックスが負、カンマで各指標値の後に正であってもよいことを必要とします。
連続したインデックスは、指定した範囲を示すのに使用することができる場合..:

#!/usr/bin/perl

@sites = qw/google taobao CodingDict weibo qq facebook 网易/;

@sites2 = @sites[3..5];

print "@sites2\n";

上記のプログラムの実装では、出力は次のようになります。

weibo qq facebook

配列要素を交換してください

配列要素置換スプライス()関数を使用したPerl、次の構文:

splice @ARRAY, OFFSET [ , LENGTH [ , LIST ] ]

パラメータ:

  1. @ARRAY:配列を交換します。
  2. OFFSET:開始位置。
  3. LENGTH:エレメント交換の数。
  4. LIST:要素のリストを交換してください。

次の例では、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 ] ] ]

パラメータ:

  1. PATTERN:区切り文字、デフォルトは空白です。
  2. EXPR:文字列の指定数。
  3. LIMIT:このパラメータが指定された場合、配列の要素の数を返します。

#!/usr/bin/perl

# 定义字符串
$var_test = "CodingDict";
$var_string = "www-CodingDict-com";
$var_names = "google,taobao,CodingDict,weibo";

# 字符串转为数组
@test = split('', $var_test);
@string = split('-', $var_string);
@names  = split(',', $var_names);

print "$test[3]\n";  # 输出 o
print "$string[2]\n";  # 输出 com
print "$names[3]\n";   # 输出 weibo

上記のプログラムの実装では、出力は次のようになります。

o
com
weibo

文字列配列を変換します

:参加()関数は、次の構文を使用して、文字列に、アレイ内のPerl

join EXPR, LIST

パラメータ:

  1. EXPR:コネクタ。
  2. LIST:リストや配列。

#!/usr/bin/perl

# 定义字符串
$var_string = "www-CodingDict-com";
$var_names = "google,taobao,CodingDict,weibo";

# 字符串转为数组
@string = split('-', $var_string);
@names  = split(',', $var_names);


# 数组转为字符串
$string1 = join( '-', @string );
$string2 = join( ',', @names );

print "$string1\n";
print "$string2\n";

上記のプログラムの実装では、出力は次のようになります。

www-CodingDict-com
google,taobao,CodingDict,weibo

配列のソート

ソートされた配列のソート()関数を使用したPerl、次の構文:

sort [ SUBROUTINE ] LIST

パラメータ:

  1. SUBROUTINE:ルールを指定します。
  2. LIST:リストや配列。

#!/usr/bin/perl

# 定义数组
@sites = qw(google taobao CodingDict facebook);
print "排序前: @sites\n";

# 对数组进行排序
@sites = sort(@sites);
print "排序后: @sites\n";

上記のプログラムの実装では、出力は次のようになります。

排序前: google taobao CodingDict facebook
排序后: facebook google CodingDict taobao

注:配列をソートすると、ASCIIの数値に応じてソートされます。私たちはより良い最初に小文字に変換していたので、その後、ソートの各要素は、配列をソートします。

特殊変数:$ [

特殊変数$ [我々$場合、第一の配列のインデックス値は、一般的に0で表す[第一値に設定し、インデックス11、アレイ、2秒などです。例としては、次のとおりです:

#!/usr/bin/perl

# 定义数组
@sites = qw(google taobao CodingDict facebook);
print "网站: @sites\n";

# 设置数组的第一个索引为 1
$[ = 1;

print "\@sites[1]: $sites[1]\n";
print "\@sites[2]: $sites[2]\n";

上記のプログラムの実装では、出力は次のようになります。

网站: google taobao CodingDict 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

リストから要素を選択します

次のように配列、インデックスが指定された要素のリストに指定されているとして使用することができるリストを読み出すことができます。

#!/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

これは、切り替えます。http://codingdict.com/article/6801

おすすめ

転載: www.cnblogs.com/bczd/p/11976812.html