in reply to undef(%hash) not doing what I expect for HoH

That doesn't seem to be the case for me:

#!/usr/bin/perl -l use strict; use warnings; my %hoh=( h => {foo=>1}, g => {bar=>2} ); print scalar keys %hoh; print scalar keys %{ $hoh{h} }; undef %hoh; print scalar keys %hoh; print scalar keys %{ $hoh{h} }; __END__

I get:

2 1 0 0

But I wouldn't use undef on aggregates anyway.