ハッシュの要素削除はdeleteで

ハッシュの要素削除はundefじゃなくてdeleteですね。

undefだと値を未定義値にするだけです。

#!/usr/bin/perl

use strict;
use warnings;

my %hash = (
              hoge => "hogehoge",
              foo  => "foofoo",
              var  => "varvar",
           );

print "--- undef  ---\n";
undef $hash{hoge};
&print_all;

print "--- delete ---\n";
delete $hash{hoge};
&print_all;

sub print_all {
    for my $key ( keys %hash ){
        defined $hash{$key} ?
            print "$key : $hash{$key} \n" :
            print "$key : undef \n";
    }
}
__END__

実行結果は以下の通り。

--- undef  ---
var : varvar 
foo : foofoo 
hoge : undef 
--- delete ---
var : varvar 
foo : foofoo 

かなり基礎的な内容で恐縮ですが、忘れててバグ作っちゃったので、メモ、メモ。。