Perl-ハッシュ

ハッシュはのセットです key/valueペア。ハッシュ変数の前にはパーセント(%)記号が付いています。ハッシュの単一の要素を参照するには、ハッシュ変数名の前に「$」記号を付け、その後に中括弧内の値に関連付けられた「キー」を使用します。

ハッシュ変数を使用する簡単な例を次に示します-

#!/usr/bin/perl

%data = ('John Paul', 45, 'Lisa', 30, 'Kumar', 40);

print "\$data{'John Paul'} = $data{'John Paul'}\n";
print "\$data{'Lisa'} = $data{'Lisa'}\n";
print "\$data{'Kumar'} = $data{'Kumar'}\n";

これにより、次の結果が生成されます-

$data{'John Paul'} = 45
$data{'Lisa'} = 30
$data{'Kumar'} = 40

ハッシュの作成

ハッシュは、次の2つの方法のいずれかで作成されます。最初の方法では、名前付きキーに1つずつ値を割り当てます-

$data{'John Paul'} = 45;
$data{'Lisa'} = 30;
$data{'Kumar'} = 40;

2番目のケースでは、リストから個々のペアを取得することによって変換されるリストを使用します。ペアの最初の要素がキーとして使用され、2番目の要素が値として使用されます。例-

%data = ('John Paul', 45, 'Lisa', 30, 'Kumar', 40);

わかりやすくするために、=>をのエイリアスとして使用して、キーと値のペアを次のように示すことができます。

%data = ('John Paul' => 45, 'Lisa' => 30, 'Kumar' => 40);

上記のフォームのもう1つの変形を示します。これを見てください。ここでは、すべてのキーの前にハイフン(-)が付いており、引用符は不要です-

%data = (-JohnPaul => 45, -Lisa => 30, -Kumar => 40);

ただし、1つの単語があることに注意することが重要です。つまり、スペースなしのキーはこの形式のハッシュ形成で使用されており、この方法でハッシュを構築すると、以下に示すようにハイフンのみを使用してキーにアクセスします。

$val = %data{-JohnPaul}
$val = %data{-Lisa}

ハッシュ要素へのアクセス

ハッシュから個々の要素にアクセスするときは、変数の前にドル記号($)を付けてから、変数名の後に中括弧内に要素キーを追加する必要があります。例-

#!/usr/bin/perl

%data = ('John Paul' => 45, 'Lisa' => 30, 'Kumar' => 40);

print "$data{'John Paul'}\n";
print "$data{'Lisa'}\n";
print "$data{'Kumar'}\n";

これにより、次の結果が生成されます-

45
30
40

スライスの抽出

配列からスライスを抽出するのと同じように、ハッシュのスライスを抽出できます。戻り値は値のリストになるため、変数に@プレフィックスを使用して戻り値を格納する必要があります-

#!/uer/bin/perl


%data = (-JohnPaul => 45, -Lisa => 30, -Kumar => 40);

@array = @data{-JohnPaul, -Lisa};

print "Array : @array\n";

これにより、次の結果が生成されます-

Array : 45 30

キーと値の抽出

を使用して、ハッシュからすべてのキーのリストを取得できます。 keys 次の構文を持つ関数-

keys %HASH

この関数は、指定されたハッシュのすべてのキーの配列を返します。以下は例です-

#!/usr/bin/perl 

%data = ('John Paul' => 45, 'Lisa' => 30, 'Kumar' => 40);

@names = keys %data;

print "$names[0]\n";
print "$names[1]\n";
print "$names[2]\n";

これにより、次の結果が生成されます-

Lisa
John Paul
Kumar

同様に、あなたは使用することができます valuesすべての値のリストを取得する関数。この関数の構文は次のとおりです-

values %HASH

この関数は、指定されたハッシュのすべての値で構成される通常の配列を返します。以下は例です-

#!/usr/bin/perl 

%data = ('John Paul' => 45, 'Lisa' => 30, 'Kumar' => 40);

@ages = values %data;

print "$ages[0]\n";
print "$ages[1]\n";
print "$ages[2]\n";

これにより、次の結果が生成されます-

30
45
40

存在の確認

存在しないハッシュからキーと値のペアにアクセスしようとすると、通常は次のようになります。 undefined値であり、警告がオンになっている場合は、実行時に警告が生成されます。これを回避するには、exists 名前付きキーが存在する場合、その値が何であるかに関係なく、trueを返す関数。

#!/usr/bin/perl

%data = ('John Paul' => 45, 'Lisa' => 30, 'Kumar' => 40);

if( exists($data{'Lisa'} ) ) {
   print "Lisa is $data{'Lisa'} years old\n";
} else {
   print "I don't know age of Lisa\n";
}

ここでは、IF ... ELSEステートメントを紹介しました。これについては、別の章で学習します。今のところ、あなたはただそれを仮定しますif( condition ) パーツは、指定された条件が真の場合にのみ実行されます。 else一部が実行されます。したがって、上記のプログラムを実行すると、指定された条件が存在するため、次の結果が生成されます($ data {'Lisa'}はtrueを返します-

Lisa is 30 years old

ハッシュサイズの取得

キーまたは値のいずれかでスカラーコンテキストを使用することにより、サイズ、つまりハッシュからの要素の数を取得できます。最初にキーまたは値のいずれかの配列を取得する必要があると言うだけで、次のように配列のサイズを取得できます-

#!/usr/bin/perl

%data = ('John Paul' => 45, 'Lisa' => 30, 'Kumar' => 40);

@keys = keys %data;
$size = @keys;
print "1 - Hash size:  is $size\n";

@values = values %data;
$size = @values;
print "2 - Hash size:  is $size\n";

これにより、次の結果が生成されます-

1 - Hash size: is 3
2 - Hash size: is 3

ハッシュ内の要素の追加と削除

新しいキーと値のペアの追加は、単純な代入演算子を使用して1行のコードで実行できます。ただし、ハッシュから要素を削除するには、使用する必要がありますdelete 以下の例のように機能します-

#!/usr/bin/perl

%data = ('John Paul' => 45, 'Lisa' => 30, 'Kumar' => 40);
@keys = keys %data;
$size = @keys;
print "1 - Hash size:  is $size\n";

# adding an element to the hash;
$data{'Ali'} = 55;
@keys = keys %data;
$size = @keys;
print "2 - Hash size:  is $size\n";

# delete the same element from the hash;
delete $data{'Ali'};
@keys = keys %data;
$size = @keys;
print "3 - Hash size:  is $size\n";

これにより、次の結果が生成されます-

1 - Hash size: is 3
2 - Hash size: is 4
3 - Hash size: is 3