delete関数 - ハッシュのキーの削除
delete関数を使用すると、ハッシュのキーを削除することができます。キーに対応する値も削除されます。戻り値は削除されたキーに対応する値です。
my $value = delete $hash{$key};
ハッシュのリファレンスに対してdelete関数を使用する場合は次のように書きます。
my $value = delete $hash->{$key};
delete関数を使って、ageというキーを削除するサンプルです。
# ageというキーを削除 my %person = (name => 'Ken', age => 19); delete $person{age};
ハッシュのリファレンスの場合のサンプルです。
# キーを削除。リファレンスの場合。 my $person = {name => 'Ken', age => 19}; delete $person->{age};
サンプルプログラム
ハッシュのキーを削除するサンプルで、出力が見れます。
use strict; use warnings; use Data::Dumper; # 生徒の数学の点数 my %math_scores = ( Aiko => 89, Kenta => 0, Taro => undef ); # 1: 最初の状態 print "1: 最初の状態\n"; if (exists $math_scores{Aiko}) { print "\$math_scores{Aiko} は存在します。\n"; } print Data::Dumper->Dump([\%math_scores] , ['*math_scores']); print "\n\n"; # deleteでキーを削除 delete $math_scores{Aiko}; # 2: deleteで削除した状態 print "2: deleteで削除した状態\n"; if (exists $math_scores{Aiko}) { print "\$math_scores{Aiko} は存在します。\n"; } else{ print "\$math_scores{Aiko} は存在しません。\n"; } print Dumper \%math_scores; print "\n";
実行結果
1: 最初の状態 $math_scores{Aiko} は存在します。 %math_scores = ( 'Aiko' => 89, 'Kenta' => 0, 'Taro' => undef ); 2: deleteで削除した状態 $math_scores{Aiko} は存在しません。 %math_scores = ( 'Kenta' => 0, 'Taro' => undef );