destructor incorrectly clears $@ upon successful removal of temp directory

The destructor cleared $@ even upon success.  If the destructor was called in the process of handling an exception, the exception was cleared and the code which handled the exception was passed an empty $@.