in reply to Re: Handling multiple output files simultaneously using arrays of filehandles and filenames
in thread Handling multiple output files simultaneously using arrays of filehandles and filenames

Thank you for that interesting advice. Please may I ask what is the basis upon which you presume that I need $! and no \n in the die output? Is this not a free choice for the programmer? Is there a particular weakness you are referring to?
  • Comment on Re^2: Handling multiple output files simultaneously using arrays of filehandles and filenames

Replies are listed 'Best First'.
Re^3: Handling multiple output files simultaneously using arrays of filehandles and filenames
by talexb (Canon) on Jan 21, 2021 at 21:50 UTC

    The $! literally tells you what the error is. I have no idea why you would want to throw that information away by not displaying it.

    The "\n" in the output isn't necessary because die takes care of adding a newline automatically -- but I guess that's a matter of taste. Add one if you like. I never add newlines to die or warn statements.

    Alex / talexb / Toronto

    Thanks PJ. We owe you so much. Groklaw -- RIP -- 2003 to 2013.

Re^3: Handling multiple output files simultaneously using arrays of filehandles and filenames
by Fletch (Chancellor) on Jan 21, 2021 at 20:29 UTC

    You need $! because otherwise you only know that there's been an error of some sort and not what specific error occurred. Just grobbling through the open(2) manual page on OS X there's 22 distinct error codes in 32 different cases which can be returned at the C level.

    The trailing newline is mostly an aesthetic choice though.

    The cake is a lie.
    The cake is a lie.
    The cake is a lie.

      nitpick:

       The trailing newline is mostly an aesthetic choice though. 

      I learned here at the Monastery (sorry can't remember by whom) that calling die with a final newline will cause it to omit the line number. It will be less verbose.

      die "aaa"; aaa at - line 1. die "aaa\n"; aaa
        Thanks. That's interesting!
      Thanks for this opinion. I think its good advice and good practice in most cases but that there may be cases when a programmer chooses to do something different, believing (almost insisting) themselves to be a free person living in a free world (I know; how naive). I am very grateful for your engagement, and all those who have offered advice and opinion in response to my question.