$!      If used numerically, yields the current value of the C "errno"               variable, or in other words, if a system or library call fails,               it sets this variable.  This means that the value of $! is               meaningful only immediately after a failure: