I am using syntax checking to see whether my Perl script is being used in the correct way. If the syntax is not correct, I display a message saying what the correct syntax is, a
It depends on what you want to have happen with STDERR and STDOUT. I prefer to send error and warning type messages to STDERR so that when someone is trying to redirect output to a file they still see the error messages; However, there are times though when STDOUT is used to communicate status to the user so he or she can tail -f
or paginate it, and at those times writing to STDERR causes them pain (they have to redirect STDERR back into STDOUT with 2>&1
, and not everyone knows how to do that). So which to use, die
or print
and exit
, depends heavily on what type of program you are writing.
There are other benefits/drawbacks to using die
:
die
with an eval
, but not exitdie
by installing a signal handler for the __DIE__
signaldie
functionEach of those has times where it is handy to be able to do them, and times when it is a pain that they can be done.
print
prints to STDOUT
but die
prints to STDERR
exit 1
exits with exit status of 1
but die
exits with exit current value of errno
that is $!
Hence die
is the preferred way as its simpler and shorter.
It is best to follow existing practice ("rule of least surprise"): exit with 2 on a fatal error such as a syntax error.