my @dbs = ( [ 'OWNER', 'dbi:...', 'user', 'pass' ], [ 'OWNER', 'dbi:...', 'user', 'pass' ], ); for my $db( @dbs ){ LogStats( @$db ); } ... sub LogStats { my( $filename, $dsn, $user, $pass ) = @_; ... my $dbh = DBI->connect( $dsn, $user, $pass, {qw/RaiseError 1/} ); open my($fh), ... ## QueryOne( $dbh, $fh, ... ); CreateTableStats( $dbh, $fh, ... ); PopulateTableStats( $dbh, $fh, ... ); DumpTableStats( $dbh, $fh, ... ); } #### sub Query4Over500 { my ( $dbh, $FHExtract, $tb_name ) = @_; $tb_name = $dbh->quote_identifier( $tb_name ); my $sql = "select * from $tb_name"; my $sth = $dbh->prepare( $sql ); $sth->execute; while (my $aref = $sth->fetchrow_arrayref) { print $FHExtract ToCsv( $aref ); } }