Badgott Geschrieben 14. September 2005 Geschrieben 14. September 2005 Hallo, ich hebe ein kleines Prob mit Perl. und zwar habe ich eine Klasse an die ein $dbh als referenz aus der Basis datei übergeben wird nun möchte ich natürlich mit dieser referenz in der Klasse arbeiten ich weise die referenz dann z.b. $self->{'dbh'} zu und möchte so einige SQL aktionen tätigen mir ist bisher leider nur noch nicht klar in wie weit ich in dem package dann noch use DBI einbinden muss ich wahr bisher der Meinung das wenn ich eine eigene Klasse mache in einem föllig abgeschottetem berreich arbeite. Ich bitte also um hilfreiche tips und ratschläge wie ich das Prob in denn grif bekomme. :-) Gruß Badgott Zitieren
iscariot Geschrieben 14. September 2005 Geschrieben 14. September 2005 ich hebe ein kleines Prob mit Perl. Na, dann wollma mal. Zuerst jedoch: Bitte verwende zukuenftig Satzzeichen. Das erleichtert den Lesen/Verstehen Prozess um einiges. und zwar habe ich eine Klasse an die ein $dbh als referenz aus der Basis datei übergeben wird Das halte ich fuer keine gute Idee. Du solltest die Verbindung in deinem Package selbst aufbauen. Wenn du naemlich innerhalb deines Packages die Verbindung zu der Datenbank schliesst und ausserhalb des Packages wieder versuchst auf die DB zuzugreifen... -> *BUMM* mir ist bisher leider nur noch nicht klar in wie weit ich in dem package dann noch use DBI einbinden muss ich wahr bisher der Meinung das wenn ich eine eigene Klasse mache in einem föllig abgeschottetem berreich arbeite. In Perl arbeitest du immer in einem Package. Uebrigens sind Packages keine Klassen, auch wenn es meistens so aussieht. Das allererste Package, das durch den Interpreter laeuft heisst "main". Man unterscheidet hier die normalen Module von den Pragmas. Pragmas sind Anweisungen wie "use strict/warnings/integer/blib/"... Pragmas sind tatsaechlich nur in dem Package aktiv wo du sie aufrufst. Anders als normale Module wie z.B. DBI. Bevor dein Script ausgefuehrt wird hat der Perlinterpreter dein Script bereits auf Fehler und aehnliches untersucht und auch _ALLE_ use/require Anweisungen durchgefuehrt. Ergo -> use/require werden vor dem eigentlichen Script ausgefuehrt und sind in deinem Prozess ueberall verfuegbar. Ich bitte also um hilfreiche tips und ratschläge wie ich das Prob in denn grif bekomme. :-) Nun.. Ich weiss nicht ob ich deine Frage schon beantwortet habe, aber hier ein kleines Script, dass das ganze etwas veranschaulicht: #!/usr/bin/perl -w # Das Paket Ein::Test package Ein::Test; # Hier wird eine Variable ohne local/my/our einen Wert zugewiesen. # Dies ist nur moeglich wenn das strict Pragma nicht befolgt wird. $x = "Ich bin das Paket Ein::Test und folge nicht dem strict Pragma\n"; print $x; # LWP::UserAgent ist in diesem Paket nicht verfuegbar. # Es wurde bereits schon in main geladen. - UNSAUBER! sub new { return bless { dbh => LWP::UserAgent->new() }, shift; } # Hier faengt wieder der 'normale' Perlcode an package main; # das strict Pragma und zwei Module laden use strict; use LWP::UserAgent; use Data::Dumper; # Die Methode 'new' aus 'Ein::Test' aufrufen und "Ein::Test" # als Argument mitgeben (->) # Danach die Datenstrucktur von $test betrachten. my $test = Ein::Test->new(); print Dumper $test; Falls du noch mehr Infos benoetigst, dann empfehle ich dir die manpage 'permodlib' und falls noch Fragen offen sind: Nur raus damit. mit freundlichen Gruessen iscariot Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.