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
);
Perlゼミ

