The DESTROY method is special because perl calls it when it realizes it can garbage-collect the object in question. If you would like to manually release the object from memory (by the way, do you have a good reason for this?), you should not call DESTOY directly, which, as you noted, will simply cause it to be called twice. Instead, you delete the last reference to the object, eg:
my $me = new Person;
Immediately after the undef(), the object will be freed (because Perl uses a ref-counting GC) and DESTROY called.
ps. My condolences regarding Andy.
s aamecha.s a..a\u$&owag.print