I have one, although it isn't in perl (C++), which makes a connection to an HL7/DICOM broker. The broker will only support 1 tcp connection at a time..well, you can imagine the mess that comes from that.
However again, I can solve that in other ways. I guess the important thing is that, if we cannot get timely destruction (And I believe refcounting to be too high a price to pay for it) then it should be simple best-effort, get the destroy as close as reasonably practical to where it would normally be, and try and special-case resource contention to avoid the file-lock problem and equivalents.
I will consider further the problems involved in timely destruction. If I have any further ideas I'll let you know.