Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. 標準関数
  3. here

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
               );
Giblog