Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

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.


} 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.

Replies are listed 'Best First'.
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: $!";


        Yeah, I asked for it :).

        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?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://988730]
[perldigious]: A question since I'm ignorant of what's normal for database management... Do admins change column names a lot in databases?
[perldigious]: On occasion my scripts break, because they will do something that seems laregly pointless to me... like in this case, changing a column name from "ABC Category" to "ABC Category Override".
[perldigious]: Being the ignorant one, my initial reaction to that is, "that's sort of a dick move, a lot of people like me expect column names like that to stay the same, why the hell would you change them like that for seemingly no good reason?"
[perldigious]: Or is my irritation/ frustration well founded?
[Corion]: perldigious: That seems to be more the export and likely it's the recipients of that export that like the titles changes
[Corion]: ... "changed"
[Corion]: I usually expect fixed header names, but am sometimes lenient in the order of columns. But changing the report titles often sounds to me as if you are not the sole consument of the export ;)
[shmem]: perldigious: as always - if it ain't broke, don't fix it. Ther must be a very compelling reason for changing column names in a database. Those are rare.

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (5)
As of 2017-05-25 13:31 GMT
Find Nodes?
    Voting Booth?