################################################################ # you don't need to read below this point. # # the rest of the code # # get the database handle associated with database name # sub get_dbh{ my $dbname = shift; $servers->SectionExists($dbname) or die "Unknown database: $dbname\n"; my $dbh = $servers->val($dbname, 'dbh'); return $dbh if $dbh; my $driver = $servers->val($dbname, 'driver') or die "Database $dbname requires a driver\n"; my $server = $servers->val($dbname, 'server') or die "Database $dbname requires a server\n"; my $user = $servers->val($dbname, 'user') or die "Database $dbname requires a user\n"; my $pass = $servers->val($dbname, 'pass') or die "Database $dbname requires a pass\n"; my $database = $servers->val($dbname, 'database'); my $dsn = "dbi:$driver:server=$server"; $dsn .= ";database=$database" if $database; $dbh = DBI->connect( $dsn, $user, $pass, { RaiseError => 1 } ); $servers->setval($dbname, 'dbh', $dbh); return $dbh; } sub print_vals{ for my $row (@_){ for(sort keys %$row){ printf "%15s: %s\n", $_, $row->{$_}; } print "-" x 78 . "\n"; } printf "%d record(s) found\n", scalar(@_); }