The "Bad file descriptor" error in $! is almost certainly a red-herring left over from some internal processing of no consequence to your code. Try printing $^E and see what that tells you?
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.