in reply to $! or $?

$! - os error - from the last system call (not to be confused with 'system()')

$? - child error - The status returned by the last pipe close ('`', 'system()')

'`' and 'system()' create child processes that run and terminate. $? contains their exit status. Other calls ('open()', 'close ()',etc.), make system calls, and $! contains the status of the last system call.