exists関数 - ハッシュのキーの存在確認
exists関数を使用するとハッシュのキーの存在を確認することができます。
# ハッシュのキーの存在確認 my $is_exists = exists $hash{$key};
ageというキーが存在するかを確認するには以下のようにします。
# ageというキーが存在することを確認 my %person = (name => 'Ken', age => 1); my $is_exists = exists $person{age};
ハッシュのリファレンスの場合には以下のようにすることができます。
# キーの存在確認。ハッシュのリファレンスの場合。 my $person = {name => 'Ken', age => 1}; my $is_exists = exists $person->{age};
defined関数との違い
よく似た関数にdefined関数があります。exists関数がハッシュのキーの存在を調べるのに対して、defined関数は値が定義されているかどうかを調べるのに利用します。
my $defined = defined $person{age};
サンプルプログラム
exists関数でハッシュの要素の状態を調べるサンプルです。
use strict; use warnings; use Data::Dumper; # 生徒の数学の点数 my %math_scores = ( Aiko => 89, Kenta => 0, Taro => undef ); print Dumper \%math_scores; print "\n"; # 1: キーの存在を確認する exists関数 print "1: キーの存在を確認する\n"; for my $key (qw/Aiko Kenta Taro Masao/) { if (exists $math_scores{$key}) { print "\$math_scores{$key} は存在します。\n"; } else { print "\$math_scores{$key} は存在しません。\n"; } }
実行結果
%math_scores = ( 'Aiko' => 89, 'Kenta' => 0, 'Taro' => undef ); 1: キーの存在を確認する $math_scores{Aiko} は存在します。 $math_scores{Kenta} は存在します。 $math_scores{Taro} は存在します。 $math_scores{Masao} は存在しません。