Amelioration script Perl

Bonjour à tous,

J’ai lu beaucoup de bien, concernant Perl, je me suis donc tourné vers lui pour réaliser un script qui doit simplement extraire des infos d’une base de données pour en alimenter une autre avec ces mêmes infos.
En cherchant sur le net, j’ai trouvé à peu près comment faire, c’est à dire que le script, bien que non fini pour le moment, fonctionne.

Par contre, je suis à peu près sûr qu’il n’est pas vraiment correct, qu’il peut être plus simple, plus léger…

[code]#!/usr/bin/perl
use warnings;
use strict;
use DBI;

Parametres de connection a la DB ISPCONFIG

my $bd = ‘’;
my $serveur = '
’;
my $identifiant = '’;
my $motdepasse = '
*’;

Parametres de connection a la DB MX

my $bd2 = ‘’;
my $serveur2 = '
’;
my $identifiant2 = '
***’;
my $motdepasse2 = ‘********’;

Connection a la DB ISPCONFIG

print “Connexion a la base de donnees $bd\n”;
my $connect_ispconfig = DBI->connect( “DBI:mysql:database=$bd;host=$serveur;”,
$identifiant, $motdepasse, {
RaiseError => 1, }
) or die “Connection impossible a la base de donnees $bd !\n $! \n $@\n$DBI::errstr”;

Connection a la DB MX

print “Connexion a la base de donnees $bd2\n”;
my $connect_mx = DBI->connect( “DBI:mysql:database=$bd2;host=$serveur2;”,
$identifiant2, $motdepasse2, {
RaiseError => 1, }
) or die “Connection impossible a la base de donnees $bd2 !\n $! \n $@\n$DBI::errstr”;

Requete pour dupliquer les users

my $query1 = "SELECT id,email FROM spamfilter_users";
my $query2 = "DELETE FROM users";
my $query3 = “INSERT INTO users(id, priority, policy_id, email, fullname, local) VALUES (?,?,?,?,?,?)”;
my $statement = $connect_ispconfig->prepare($query1);
my $statement2 = $connect_mx->prepare($query2);
my $statement3 = $connect_mx->prepare($query3);
$statement->execute;
$statement2->execute;
while (my @row = $statement->fetchrow_array) {
$statement3->execute($row[0], 7, 1, $row[1], $row[1],‘Y’);

print “$row[0] $row[1]\n”;

}[/code]

La dernière partie : Requête, me semble vraiment lourde.
Est-ce quelqu’un peut m’aider à alléger ça ?

Merci d’avance et joyeuses fêtes !

Tu dois pouvoir utiliser [mono]execute_for_fetch[/mono] pour exécuter ton [mono]statement3[/mono] directement pour chaque résultat de l’exécution de ton [mono]statement[/mono].

Ça t’évite une boucle et tu dois gagner une ligne ou 2 en terme de performance je sais pas ça dépend de l’implémentation de [mono]execute_for_fetch[/mono].

Ok merci je vais creuser de ce côté.