2020-09-04T12:45:02
tk102Oh, das ist ein guter Hinweis! Wobei das in meinem Anwendungsfall wohl eher keine riesen Rolle spielen wird.
Na ja, es reicht ja schon, wenn Dein Programm sich merkwürdig verhält, wenn in
$Name oder
$Message mal etwas drin ist, was in SQL Bedeutung hat. Zum Beispiel ist
don't ein gültiger Name für eine Perl-Funktion, und der Apostroph kann auch in Namen und Dateinamen vorkommen. Platzhalter, wie vom Raubtier vorgeschlagen, sind nicht mal sonderlich kompliziert, dafür bist Du aber alle Unsicherheiten beim Inhalt der Datenbankfelder los.
2020-09-04T12:45:02
tk102Wie genau bringe ich Perl dazu, die Verbindung offen zu halten?
Die Verbindung fällt dir runter, weil Du
$DBLogdbh als lexikalische Variable (mit
my) innerhalb Deines Unterprogramms deklariert hast. Nach einem Durchlauf geht
$DBLogdbh "out of scope" - und damit wird die Datenbankverbindung automatisch geschlossen.
Die einfachste Möglichkeit, das zu verhindern: Deklariere
my $DBLogdbh; vor Deinem Unterprogramm, aber in der gleichen Datei.
Um das Schließen der Datenbank-Verbindung brauchst Du Dich nicht zu kümmern, wenn Du es sowieso erst am Ende des Programms machen willst: Das erledigt Perl von alleine.
Und natürlich fällt Dir die Verbindung auch beim Aufruf von
LogDb($Modul,"Z", "End"); abgebaut...