eval,
prints the value of
LIST to STDERR
and exits with the current value of $!
(errno). If $!
is 0, exits with the value of
(back-tick `command` status). If
is 0, exits with 255. Inside an eval,
the error message is
stuffed into
$@
, and the eval
is terminated with the undefined value; this
makes die
the way to raise an exception.
Equivalent examples:
die "Can't cd to spool: $!\n" unless chdir '/usr/spool/news'; chdir '/usr/spool/news' or die "Can't cd to spool: $!\n"
If the value of EXPR does not end in a newline, the current script line number and input line number (if any) are also printed, and a newline is supplied. Hint: sometimes appending ``, stopped'' to your message will cause it to make better sense when the string ``at foo line 123'' is appended. Suppose you are running script ``canasta''.
die "/etc/games is no good"; die "/etc/games is no good, stopped";
produce, respectively
/etc/games is no good at canasta line 123. /etc/games is no good, stopped at canasta line 123.
See also exit
and warn.
You can arrange for a callback to be called just before the
die
does its deed, by setting the $SIG{__DIE__}
hook. The associated handler will be called with the error text and can
change the error message, if it sees fit, by calling die
again. See the perlvar manpage for details on setting %SIG
entries, and eval
for some examples.