$! If used in a numeric context, yields the current
value of errno, with all the usual caveats. (This
means that you shouldn't depend on the value of $!
to be anything in particular unless you've gotten a
specific error return indicating a system error.)
If used in a string context, yields the correspond-
ing system error string. You can assign to $! in
order to set errno if, for instance, you want $! to
return the string for error n, or you want to set
the exit value for the die operator. (Mnemonic:
What just went bang?)