Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: Looking for pointers or optimizations.

by greengaroo (Hermit)
on Aug 21, 2012 at 13:39 UTC ( #988730=note: print w/ replies, xml ) Need Help??


in reply to Looking for pointers or optimizations.

First, you should always explicitly close any filehandle, even if we all know it closes itself at the end of the script, it is good practice to close it as soon as you don't need it. About your elsif and else, you should start them on a new line.

Either:

} elsif ( ... ) { } else { }

or C style:

} elsif ( ... ) { } else { }

But don't mix both in your code! Choose one and always use the same.

Take some space, its free! If readability is important to you, don't be afraid to add empty lines, like before and after a loop statement or a if-elsif-else block.

Also, if you want to learn more, I recommend you read the book Perl Best Practices (O'Reilly). Not only they provide guidelines but also they explain why. Enjoy!

Take my advice. I don't use it anyway.


Comment on Re: Looking for pointers or optimizations.
Select or Download Code
Re^2: Looking for pointers or optimizations.
by nemesdani (Friar) on Aug 21, 2012 at 13:50 UTC
    "First, you should always explicitly close any filehandle"
    ...not to mention checking your filenhandle in the first place ;)

    open (INP, "<", "$filename") or die "cannot open input file";

    Another thing: you use @ARGV in scalar context - I doubt that this is what you want.

    I'm too lazy to be proud of being impatient.
      open (INP, "<", "$filename") or die "cannot open input file";

      You may want to

      • not interpolate the variable, just use it as is - why restringify something that you think should already be a string.
      • use lexical file handles - it will allow it to fall out of scope rather than being a global. Forcing yourself to think of the scoping of variables can be good when trying to make your code modular.
      • include the error message in the error response - it will help to debug why the file was not able to be opened. Was it due to too many files being opened, permissions being wrong on the file, the file not existing, sunspots...?

      Update: I see that the OP has done two of the three of these already -- this comment is targeted at the parent post. :-)

      open (my $inputFH, "<", $filename) or die "cannot open input file: $!";

      --MidLifeXis

        Yeah, I asked for it :).
        Thanks.

        I'm too lazy to be proud of being impatient.
Re^2: Looking for pointers or optimizations.
by thmsdrew (Scribe) on Aug 21, 2012 at 14:21 UTC

    Thanks for the tips. I didn't really intentionally write my statements like that. Just kind of happened. Will check that book out!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://988730]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (3)
As of 2014-07-29 05:08 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (211 votes), past polls