keys関数 - ハッシュのすべてのキーを取得



  1. Perl




  2. 関数



  3. here

keys関数を使用すると、ハッシュのすべてのキーを取得することができます。取得したキーの順序は不定です。

# すべてのキーを取得
my @keys = keys %hash;

ハッシュのリファレンスを引数として渡す場合は、デリファレンスする必要があります。

# すべてのキーを取得。ハッシュのリファレンスの場合。
my @keys = keys %$hash;
ハッシュのキーと値をすべて出力

keys関数を使って、ハッシュのすべてのキーとすべての値を出力してみます。

# キーの辞書順で並べ替えて出力
my $scores = {Ken => 1, Mike => 2, Rika => 3};
for my $person (sort keys %$scores) {
  print "$person : $scores->{$person}\n";
}

出力結果は以下のようになります。

Ken : 1
Mike : 2
Rika : 3

keys関数で得られるキーは順序が不定です。sort関数と組み合わせると安定した順序で出力することができます。

# キーの辞書順で並べ替えて出力
my $scores = {Ken => 1, Mike => 2, Rika => 3};
for my $person (sort keys %$scores) {
  print "$person : $scores->{$person}\n";
}

さらにreverse関数と組み合わせると、逆順で出力することができます。

# キーの辞書順で並べ替えて出力
my $scores = {Ken => 1, Mike => 2, Rika => 3};
for my $person (reverse sort keys %$scores) {
  print "$person : $scores->{$person}\n";
}
ハッシュの値をすべて取得する

ハッシュの値だけをすべて取得したい場合はvalues関数を使用することができます。

my @values = values %hash;
キーと値のペアを順番に取得する

キーと値のペアを順番に取得したい場合はeach関数を使うことができます。

# (キー, 値)のペアを順番に取得
my %age = (Ken => 19, Mike => 34);
while (my ($name, $age) = each %age) {
  ...
}

keys関数、values関数、each関数という似ている関数がありますが、ハッシュの処理にkeys関数を使うのがお勧めです。keys関数は、パフォーマンスもよく、三つの中で非常に活用のしやすい関数です。



  1. Perl




  2. 関数



  3. here