Note also that $! will not contain any meaningful result
unless the function you have just called explicitly claims
to set it. Otherwise its just the value left over from
the last failed system call your code happened to make, which
may or may not be related to the error you're getting.