in reply to Re: Trouble iterating through a hash
in thread Trouble iterating through a hash

Nice and clean (++).

The only hesitation I had was that the error checking in OP's "open" statements was not retained.

open (...) or die "Couldn't open... $!";
Please add that to your post, so it can be truly exemplary for noobs.

        ...it is unhealthy to remain near things that are in the process of blowing up.     man page for WARP, by Larry Wall

Replies are listed 'Best First'.
Re^3: Trouble iterating through a hash
by Marshall (Canon) on Mar 09, 2017 at 04:44 UTC
    Error checking is actually taken care of by "use autodie;". I personally don't like to do that because often a die message can explain to the user the context of what is happening in addition to the actual file that couldn't be opened, e.g. "can't open configuration file: $file_name". This sort of thing becomes more important if there is a GUI involved as opposed to a command line.

    Also other "tweaking" of the die message can be done. There is a difference between  die "xyzzy" and die "xyzzy\n" This controls whether or not the user gets the Perl line of code number. Sometimes, it can confuse users if too much info is given with terminology that they don't understand.

    ###### with auto die ###### open XXX, '<', "XXX"; #Can't open 'XXX' for reading: 'No such file or directory' at C:\Proje +cts_Perl\testing\die_messasges.pl line 7 ###### without auto die ### # trailing \n in the die message suppresses the line number. open XXX, '<', "XXX" or die "couldn't open Config file, XXX!\n"; # couldn't open Config file, XXX! open XXX, '<', "XXX" or die "couldn't open XX file!"; #couldn't open XX file! at C:\Projects_Perl\testing\die_messasges.pl l +ine 5. open XXX, '<', "XXX" or die "couldn't open config file XX!, $!"; # couldn't open config file XX!, No such file or directory at C:\Proje +cts_Perl\testing\die_messasges.pl line 6.
    update:
    I didn't show every possibility.
    Some points: 1)autodie is pretty cool, especially for short quick scripts. But, there is no context information. In a complex app, it may not be apparent to the user what this file is about. 2) Add or not the trailing "\n" to a die message to control reporting of Perl line number. 3) Often $! is just confusing noise depending upon the App. I use all of the above options in one situation or another. I can't say: "always do it way #X".
      Nice (++). I did not realize autodie was so clear about the file name , and error message - will use that on my next project. Thanks.

              ...it is unhealthy to remain near things that are in the process of blowing up.     man page for WARP, by Larry Wall