ハッシュの要素削除は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
かなり基礎的な内容で恐縮ですが、忘れててバグ作っちゃったので、メモ、メモ。。