in reply to Why might a close operation die?
You might try checking the value of $?. From the docs on open:
Closing any piped filehandle causes the parent process to wait for the child to finish, and returns the status value in $?. [download]