http://www.perlmonks.org?node_id=1000487


in reply to Spurious "Invalid Argument" on file open

Hi rovf.
This question arises solely from idle curiosity and has no bearing on your problem. I was wondering why you use the
    if (open ...) { process... } else { die "error: $!" }
file open and process construct given in your OP rather than the less verbose and, IMHO, cleaner  open ... die "..."; idiomatic construct?

I notice something similar in bioinformatics applications, where something like
    unless (open ...) {
        print STDERR "error message: $!";
        exit;
        }
is often seen. I could understand if the exit built-in was used to return a distinctive error code to the OS, but I only seem to see  exit; (returning no error code) or  exit(1); used. Anyone have any notions on the rationale of this idiom?

Again, just idle curiosity here.

Replies are listed 'Best First'.
Re^2: Spurious "Invalid Argument" on file open
by parv (Parson) on Oct 23, 2012 at 15:05 UTC

    (I was under the mistaken impression that without a number given, exit returns with exit code of previous command. After reading the exit pod,) exit will return with 0 in case of second example.

    I would say unfamiliarity of the shorter version might be the reason for the verbose code. Also, exit cannot simply be caught in eval {}; unlike die or croak but I doubt that that would be the reason for cited uses of exit.

Re^2: Spurious "Invalid Argument" on file open
by rovf (Priest) on Oct 24, 2012 at 08:50 UTC
    The code posted here, was a condensed version, to focus on the problem in question. In my realy code, the else branch contains other cleanup code, which is, however, not relevant to our problem.

    -- 
    Ronald Fischer <ynnor@mm.st>