Mailinglisten-Archive |
Aloha, > ---------- > Von: Marcel Tscherkasow[SMTP:marcel.tscherkasow_(at)_mail.uni-oldenburg.de] > > Und dieser dbhandle bleibt mir über die Subs nicht erhalten. Ich will > "dbhandle->quote($newlogin)" beim Erzeugen des SQl-Befehls ausführen. Und > hier meldet er, dass der dbhandle destroyd wurde ("Last Handle unknown or > destroyed". > > Hier der ,glaub ich relevante, Code: > my $dbhandle; > Hier definierst du $dbhandle als lokale Variable, > if ($login ne "" && $passwd ne "") > { > # Verbindung zur Datenbank herstellen > $dbhandle = dblogin($adminlogin, $adminpasswd) or die ; > Hier wird sie dann nochmal zum Objekt gecastet (gott sei dank geht das in Perl ;) du haettest auch schreiben konenen my $dbhandle = dblogin.... > # bis hierhin geht alles gut > print start_form, > table({-align=>'center'}, > Tr( > td({-align=>'center'}, topage("Neuen User anlegen")) > ) > ), > end_form; > } > > in einer folgenden Subroutine kommt dann das Quoting, aber da existiert > der > DB-Handle schon nicht mehr. > In den Subroutinen existieren GENERELL keine Variablen, die im Hauptprogramm mit my $... angelegt wurden. Entweder: du laesst den ganzen use strict; my.... krams weg (was schnell ins Auge geht...) oder du übergibst deiner Subroutine das Handle, z.b. tu_dies( $dbhandle, restliche parameter); definieren tust du die Subroutine dann mit sub tu_dies { my $dbhandle = $_[0]; # Heisst jetzt gleich wie das im Hauptprogramm, ist aber # nur hier in dieser Subroutine gültig (lokale Variable)! my $zweiter_parameter = $_[1]; ... usw } ODER: sub tu_dies { my ( $dbhandle, $zweiter_parameter) = _(at)__; # Ohne gewähr ;-) ... usw } genauer stehts in perldoc perlsub , bei den meisten Distributionen gibts auch eine perlsub.html mit dem gleichen Inhalt :-) Grüße, Mathias --- *** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive