If the perl bindings introduce an explicit close API, it will no longer be safe to rely on object destruction to call cleanup code. For example, if a program creates a temporary directory which must persist for the duration of the program but must be cleaned up prior to exit, the program cannot rely on a destructor to do the cleanup as the handle may have been closed before the destructor is executed.
A solution to this would be to allow callbacks to be registered and executed immediately prior to close(). For example:
See my reply here:
Matt, what's the current status of this one? If virt-v2v
no longer needs it, then we should close it. If there is
still pain for virt-v2v then we should leave it open, but
see also comment 1 about how hard it is to solve it.
I worked round it with GuestfsHandle, so i don't need this any more.