in reply to Efficiency on Perl Code!

Gentle monk,

Yes, the degree of repetition is a red flag that you're working inefficiently. One of your problems is that you have a sequence of variables that aren't (programatically) connected to each other, even though their names form a series

my $dbh = ... my $dbh_b = ... my $dbh2 = ... my $dbh2_b = ...
Group these all together into a hash over which you can iterate.
use strict; my $db = "MyServer"; my $user = MyServerStuff::odbc->{ $db } { user }; + my $pass = MyServerStuff::odbc->{ $db } { pass }; my %dbh; for(my $ix= 1; $ix < 6; $ix++){ foreach my $choice (qw(a b)){ $dbh{$ix}{$choice} = DBI->connect("DBI:ODBC:$db",$user, $pass, {Ra +iseError => 1})}};
For the part that generates the call to the database, wrap the code in a similar loop. Use sprintf to interpolate the '!' that switches off and on, and the varying 'from main / where main ' clauses.

throop

Updated: started $ix at 1

Replies are listed 'Best First'.
Re^2: Efficiency on Perl Code!
by Anonymous Monk on Oct 05, 2007 at 18:22 UTC
    I don't understand this part "foreach my $choice (qw(a b)){" , I am running this code and its giving me the double lines in the for loop, "for(my $ix= 0; $ix < 6; $ix++){ " it is printing 12 lines instead of 6.
      I've updated my code for $ix to start at 1, not 0. You had 10 variables in your opening block – dbh (1 thru 5) and dbh_b (1 thru 5). This loop generated both sets.

      throop