in reply to forced garbage collection

Not that I know of. Try using delete instead of undef on the hash keys.

Update:
Alternately, locally scope the hash in a code block. When the block ends, Perl should reclaim the name space and therefore the memory. IIRC =)

If you need a final version of the hash data to be globally available, put all the hash ops in a subroutine and use the return statement to return just what you need. Likewise to the above, when the subroutine ends, Perl will reclaim all that memory. Just don't return a reference to the data structure, then you will have a closure of sorts, which will defeat the entire purpose!

Friar 'kaboo