keys関数:ハッシュに含まれているすべてのキーをリストとして取得する

Perl で用意されている組み込み関数の一つである keys 関数の使い方です。 keys 関数は対象となるハッシュに含まれている全てのキーをリストの形で返します。

(Last modified: )

keys関数の書式と基本的な使い方

keys 関数は次のように定義されています。

keys
keys(HASH)
全てのキーをリストの形で返します。

パラメータ:
  HASH  対象のハッシュ
戻り値:
  ハッシュに含まれるキーのリスト

1 番目の引数には対象となるハッシュが格納されたハッシュ変数を指定します。

具体的には次のように記述します。

my %address = (
"鈴木" => "東京都千代田区",
"山田" => "東京都葛飾区"
);

my @keylist = keys(%address);

戻り値として取得できるリストを配列変数に格納しています。返されるキーのリストの要素がどのような順序で並んでいるかは分かりません。ハッシュでは各要素に順番は無いためです。

なお keys 関数の戻り値を配列ではなく単なる変数に格納した場合は、ハッシュのキーのリストでは無くハッシュに含まれる要素の個数が格納されます。

my %address = (
"鈴木" => "東京都千代田区",
"山田" => "東京都葛飾区"
);

my $keycount = keys(%address);

※ハッシュに含まれるキーではなく値のリストを取得するには「values関数」を参照して下さい。

サンプルコード

それでは簡単なサンプルを作成します。

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

my %address = (
"鈴木" => "東京都千代田区",
"本田" => "愛知県名古屋市",
"山田" => "東京都葛飾区",
"遠藤" => "大阪府堺市"
);

my @keylist = keys(%address);
my $keycount = keys(%address);

print "要素数は $keycount です。\n";

for (my $i = 0; $i < $keycount; $i++){
  print "$keylist[$i]\n";
}

テキストエディタでプログラムを記述したあと sample.pl という名前で保存します。(文字コードは UTF-8 です)。コマンドプロンプトを起動し、プログラムを保存したディレクトリへ移動したあとで次のように実行します。

perl sample.pl

次のように実行結果が表示されます。

keys関数:ハッシュに含まれている全てのキーをリストの形で返す(1)

ハッシュに含まれるすべてのキーをリストとして取得し、画面に表示しました。

-- --

Perl で用意されている組み込み関数の一つである keys 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。