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";