#! /usr/bin/perl use DBI; @tmp_bu=(1,2,3,4,5,6,7,8,9) $i=0; open(OUT,'>>',"$Pfad"."SAM"."$samzahl") or die "$!"; while (<@tmp_bu>) # je bundesland {              $zahl[$i]=2000;        #Prüfung verfügbarer Adressen, sonst maximal mögliche verwenden        $sql="SELECT Count(Lfd_Nr) FROM Daten WHERE Bundesland=".$tmp_bu[$i].";";        $row = $dbh->selectrow_arrayref($sql);        $verfugadr = $row->[0];        if ($verfugadr < $zahl[$i]) {$zahl[$i]=$verfugadr;} #selectrow is extrem langsam, gibts da ne andere Methode? # -> extremer Zeitfresser                $sql = "SELECT Lfd_Nr, Vorname, Name, Adresse, PLZ, Bundesland, Anz_Benutz  FROM Daten WHERE Bundesland=".$tmp_bu[$i]." ORDER BY Name asc, rand() limit ".$zahl[$i].";";}                my $sth = $dbh->prepare($sql) || die DBI->errstr();        $sth->execute() || die DBI->errstr(); #hier das execute sehr langsam. das prepare kann ich nicht außerhalb der ersten #Schleife machen, da er das limit nicht richtig setzen kann. #also wenn ich außerhalb das prepare mache mit "limit ?", #dann erzeugt mir prepare und execute jeweils ein ' so dass dann stehen würde "limit ''40'' # -> extremer Zeitfresser          while (@row = $sth->fetchrow_array)        {                $key=$key+1;                                $results="*key=$key;nam=$row[1] $row[2];adr=$row[3];plz=$row[4];;bland=$row[5]";                print OUT "$results\n";                                $benutz=$row[6]+1;                if ($benutz == 6) {$benutz=0;}                my $sql = "UPDATE Daten SET Anz_Benutzung=$benutz WHERE Lfd_Nr=$row[0]";                my $sth = $dbh->prepare($sql) || die DBI->errstr();                $sth->execute() || die DBI->errstr();                 #das execute ist zwar auch net schnell aber schneller als das erste :-)        }        $i=$i+1;        $sth->finish; }