And finds that reliable destruction order was added in 2000, so all 5.8 releases have it.

Note that, until 5.8, exit() did not run DESTROY or END blocks. So your problem would not have existed then. (But you didn't get the chance to do cleanup that you might want to.)

Cheers,
Ben