Perl を始めるログイン
Perl を始める
著者:php.cn  更新時間:2022-04-14 16:05:12

Perl ハッシュ


ハッシュは、キー/値のペアのコレクションです。

Perl のハッシュ変数はパーセント記号 (%) で始まります。

ハッシュ要素の形式にアクセスします: ${key}

以下は簡単なハッシュの例です:

#!/usr/bin/perl

%data = ('google', 'google.com', 'php', 'php.cn', 'taobao', 'taobao.com');

print "$data{'google'} = $data{'google'}\n";
print "$data{'php'} = $data{'php'}\n";
print "$data{'taobao'} = $data{'taobao'}\n";

上記のプログラムを実行すると、出力結果は次のようになります:


ハッシュを作成する

次の 2 つの方法でハッシュを作成します:

1. 各キーに対して値を設定します

$data{'google'} = 'google.com';
$data{'php'} = 'php.cn';
$data{'taobao'} = 'taobao.com';

2. リストを通して設定します

リストの最初の要素はキーで、2 番目の要素は値です。

%data = ('google', 'google.com', 'php', 'php.cn', 'taobao', 'taobao.com');

=> 記号を使用してキー/値を設定することもできます:

%data = ('google'=>'google.com', 'php'=>'php.cn', 'taobao'=>'taobao.com');

次の例は、引用符の代わりに - を使用した上記の例の変形です:

%data = (-google=>'google.com', -php=>'php.cn', -taobao=>'taobao.com');

このメソッドを使用すると、キーにスペースを含めることはできません。読み取ります。 要素を取得する方法は次のとおりです:

$val = %data{-google}
$val = %data{-php}

ハッシュ要素にアクセスします

ハッシュ要素にアクセスする形式: ${key}、例は次のとおりです:

#!/usr/bin/perl

%data = ('google'=>'google.com', 'php'=>'php.cn', 'taobao'=>'taobao.com');

print "$data{'google'} = $data{'google'}\n";
print "$data{'php'} = $data{'php'}\n";
print "$data{'taobao'} = $data{'taobao'}\n";

上記のプログラムを実行し、出力結果は次のとおりです:


ハッシュ値を読み取ります

配列と同じようにハッシュから値を抽出できます。

ハッシュ値は配列構文形式: @{key1,key2}に抽​​出されます。

#!/uer/bin/perl


%data = (-taobao => 45, -google => 30, -php => 40);

@array = @data{-taobao, -php};

print "Array : @array\n";

上記のプログラムを実行すると、出力結果は次のようになります:

Array : 45 40

ハッシュのキーと値を読み取ります

すべてのキーを読み取ります

keys関数を使用して、ハッシュのすべてのキーを読み取ることができます。構文形式は次のとおりです。

keys %HASH

この関数は、すべてのハッシュのすべてのキーの配列を返します。

#!/usr/bin/perl 

%data = ('google'=>'google.com', 'php'=>'php.cn', 'taobao'=>'taobao.com');

@names = keys %data;

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

上記のプログラムを実行すると、出力結果は次のようになります:

taobao
google
php

同様に、values関数を使用してハッシュのすべての値を読み取ることができます。構文形式は次のとおりです:

values %HASH

この関数。すべてのハッシュ配列のすべての値を返します。

#!/usr/bin/perl 

%data = ('google'=>'google.com', 'php'=>'php.cn', 'taobao'=>'taobao.com');

@urls = values %data;

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

上記のプログラムを実行すると、出力結果は次のようになります:

taobao.com
php.cn
google.com

要素が存在するかどうかを検出します

ハッシュに存在しないキー/値のペアを読み取った場合は、未定義の値が返されます。警告リマインダーが表示されます。

この状況を回避するには、exists 関数を使用してキーが存在するかどうかを判断できます。 キーが存在する場合は、次のように記述します。

#!/usr/bin/perl

%data = ('google'=>'google.com', 'php'=>'php.cn', 'taobao'=>'taobao.com');

if( exists($data{'facebook'} ) ){
   print "facebook 的网址为 $data{'facebook'} \n";
}
else
{
   print "facebook 键不存在\n";
}

上記のプログラムを実行すると、出力結果は次のようになります。コードでは ..ELSE

ステートメントを使用しました。これについては、次の章で詳しく紹介します。

ハッシュサイズを取得する


ハッシュサイズは、まずキーまたは値の要素配列をすべて取得し、次に配列の要素数を計算することで取得できます。 :

facebook 键不存

実行 上記のプログラムの出力結果は次のとおりです:

#!/usr/bin/perl

%data = ('google'=>'google.com', 'php'=>'php.cn', 'taobao'=>'taobao.com');

@keys = keys %data;
$size = @keys;
print "1 - 哈希大小: $size\n";

@values = values %data;
$size = @values;
print "2 - 哈希大小: $size\n";

ハッシュへの要素の追加または削除


キーと値のペアの追加は、単純な代入によって実行できます。ただし、ハッシュ要素を削除するには、

delete

関数を使用する必要があります:

1 - 哈希大小: 3
2 - 哈希大小: 3
上記のプログラムを実行すると、出力結果は次のようになります:
#!/usr/bin/perl

%data = ('google'=>'google.com', 'php'=>'php.cn', 'taobao'=>'taobao.com');
@keys = keys %data;
$size = @keys;
print "1 - 哈希大小: $size\n";

# 添加元素
$data{'facebook'} = 'facebook.com';
@keys = keys %data;
$size = @keys;
print "2 - 哈希大小: $size\n";

# 删除哈希中的元素
delete $data{'taobao'};
@keys = keys %data;
$size = @keys;
print "3 - 哈希大小: $size\n";