in reply to cgi code line message

Just an exerpt from of $! perldoc perlvar.

$! 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:
if (open(FH, $filename)) { # Here $! is meaningless. ... } else { # ONLY here is $! meaningful. ... # Already here $! might be meaningless. } # Since here we might have either success or failure, # here $! is meaningless.
In the above *meaningless* stands for anything: zero, non-zero,
"undef". A successful system or library call does not set the
variable to zero.
If used an a string, yields the corresponding system error
string. You can assign a number to $! 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?)


Cheers,
Rupesh.