dyno2316 ロヒミフ perl VBA Excel 秀丸

ハッシュの要素の存在・定義・真偽


### ハッシュの要素の状態として、
# 1. キーが存在する キーが存在しない
# 2. 値が定義されている 値が定義されていない
# 3. 値が真である 値が偽である
# という区別があります。


my %math_score_of = (
Aiko => 89,
Kenta => 0,
Taro => undef,
); #生徒の数学の点数

require Data::Dumper;
print Data::Dumper->Dump( [ \%math_score_of ] , [ '*math_score_of' ] );
print "\n";

###1: キーの存在を確認する( exists関数を使う )
print "1: キーの存在を確認する(exists)\n";
foreach my $key ( qw( Aiko Kenta Taro Masao ) ){ # 'Masao'は存在しない
if( exists( $math_score_of{ $key } ) ){
print "\$math_score_of{ $key } は存在します。\n";
}
else{
print "\$math_score_of{ $key } は存在しません。\n";
}
}
print "\n";

###2: 値が定義されていることを確認する( defined関数を使う );
print "2: 値が定義されていることを確認する(defined)\n";
foreach my $key ( qw( Aiko Kenta Taro Masao ) ){
# 'Taro' => undef と 'Masao'( 存在しない )は定義されていない
if( defined( $math_score_of{ $key } ) ){
print "\$math_score_of{ $key } は定義されています。\n";
}
else{
print "\$math_score_of{ $key } は定義されていません。\n";
}
}
print "\n";

###3: 真偽を確認する( if文で直接判定 )
print "3: 真偽を確認する(if 値)\n";
foreach my $key ( qw( Aiko Kenta Taro Masao ) ){
# 'Kenta' => 0 と'Taro' => undef と 'Masao'( 存在しない )は偽
if( $math_score_of{ $key } ){
print "\$math_score_of{ $key } は真です。\n";
}
else{
print "\$math_score_of{ $key } は偽です。\n";
}
}