Je travaille sur un script d'exploration réseaux (intranet), pour aller plus vite, je voudrais utiliser les threads mais perl me sort l'erreur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
thread failed to start: DBD::ODBC::db prepare failed: handle 2 is owned by thread 224014 not current thread 1a70ac4 (handles can't be shared between threads and your driver may need a CLONE method added) at C:\DOCUME~1\Teddy\Bureau\thread.pl line 22.
A thread exited while 3 threads were running.
mon code etant assez long j'en est fait un ayant la meme "structure" et souffrant de ce fait du meme probleme le voila :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!C:/Perl/bin/perl.exe -w
use threads;
use DBI;
 
my $DSN = 'driver={SQL Server};Server=Vista\mssql; database=link; uid=sa;pwd=sigeme;';
my $dbh = DBI->connect("dbi:ODBC:$DSN", { odbc_cursortype => DBI::SQL_CURSOR_DYNAMIC, AutoCommit => 0 } ) or die ( db($DBI::errstr) );
 
 
 my $i = 2;
 
   if ($ARGV[0] =~ /^http:\/\//g ) {
     while ($i) {
     --$i;
         my $thr = threads->new(\&unix, @ARGV);
            $thr->detach;
     }
  }
 
sub unix {
 foreach my $url (@_) {
 
  my $l = $dbh->prepare("SELECT * FROM url");
    $l->execute;
   print "$url";
 }
}
Merci de votre aide