sub spider { my $pid=fork(); if ($pid) { print "Parent.. returning\n"; return; } use DBI; my $sdbh = DBI->connect( "DBI:mysql:dbase;", 'username','password' ) or die "Couldn't connect to database: " . DBI->errstr; print "spider post-fork\n"; my $string = "SELECT data FROM info WHERE name='spiders'"; my $sth = $sdbh->prepare($string); #$sth->{InactiveDestroy}=1; $sth->execute; my $data = $sth->fetchrow_arrayref(); my $p=$data->[0]; print "spider says P is $p\n"; for (my $i=1;$i<10;$i++) { print "forking for ftpspider\n"; $pid=fork(); if (!$pid) { print "child... calling ftpspider\n"; ftpspider($i); } print "parent... finishing loop\n"; $|++; } print "finishing up db connections\n"; $sth->finish; $sdbh->disconnect; } sub ftpspider { my $call=shift; $|++; print "ftpspider called with $call... we're the grandchild\n"; use DBI; print "DBI used ok\n"; my $gdbh = DBI->connect( "DBI:mysql:dbase;", 'username','password' ) or die "Couldn't connect to database: " . DBI->errstr; print "gdbh created ok\n"; $gdbh->do("UPDATE info SET data=data+1 WHERE name='spiders'"); print "updated ok\n"; print "done updating grandchild... disconnecting\n"; $gdbh->disconnect; print "grandchild done.... exiting\n"; exit; }