Ich habe mein erstes Package geschrieben.
package sebastian;
sub hallo{print „hallo“;}
1;
Ich habe es in C:\ms-server\Perl\lib\
abgelegt als sebastian.pm
Mein testtestpm.pl ruft dort das sub hallo auf.
use sebastian;
sebastian->hallo;
Als Fehlermeldung bekomme ich:
Can’t locate object method „hallo“ via package „db_konfig“ at C:\ms-server\wwwroot\dpa-mit-mysql\pl\testtestpm.pl line 3.
Ich versuche schon seit Tagen dies zum laufen zu bringen.
Ich habe das Modul schon in verschiedenen Ordnern gehabt.
Zuerst wollte ich es in einem anderen Ordner haben und erweiterte beim Aufruf mit dieser Zeile:
-IC:/ms-server/wwwroot/dpa-mit-mysql
Später wollte ich mich damit begnügen es im
C:\ms-server\Perl\lib\meinpm
abzulegen und erweiterte das Aufruf-Script mit:
use meinpm::sebastian;
ebenfalls ohne Erfolg.
Nun wäre ich sehr froh, wenn Ihr hier einmal wieder weiterhelfen würdet.
Ich habe es in C:\ms-server\Perl\lib\
abgelegt als sebastian.pm
Pack es beim Testen doch am Besten ins Selbe Verzeichnis wie das TestScript.
OK, ich versuch mich mal an der Grundstruktur eines Packages:
(Die Sachen in Grossbuchstaben musst Du dan ersetzen/anpassen)
package PACKAGENAME;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw($VARIABLE SUBFUNKTION);
#Alles was Du exportieren (also von aussen benutzen willst) muss hier drinstehen... alles andere wird nur innerhalb des Packages benutzt
$VARIABLE="test";
sub SUBFUNKTION{
#Inhalt
print "TEST\n";
}
1;
So müsste es gehen… schau Dir doch mal die Perl-Doku zum Thema Packages an…
Danke-mail kommt nicht zu dir.
Ich konnte mich per Email nicht bedanken… Also danke.
Vielleicht ist die Fehlermeldung für dich wichtig:
----- Transcript of session follows -----
… while talking to mx0.gmx.de.:
>>> RCPT To:… User unknown or not available - Empfaenger unbekannt oder nicht erreichbar
550 … User unknown
Hat geklappt folgendermasen
Danke Euch allen.
Ich konnte nun meine Module verwenden.
Ich werde Eure Beiträge sicherheitshalber speichern.
Ich habe folgende Regeln beachtet.
Im Modul *.pm
package Name; # Name mit Großbuchstaben beginnend (Konfession)
Endet mit 1;
Im Script:
In erster Zeile:
#!/ms-server/Perl/bin/perl -I/ms-server/Perl/lib/dpanews
Verzeichnis von Perl , Verzeichnis meiner Module
use Name; # Name mit Großbuchstaben beginnend (Konfession)
Name->feldnamen; # Aufruf eines Subs im Modul
Ausserdem hatte ich noch einen Fehler beim Aufruf von Perl:
Statt
perl.exe -w%f
muss ich
perl.exe -w %f
schreiben.
Ersteres gab immer erstgenate Fehlermeldung. Es hat lange gedauert bis ich darauf kahm.
P.S.: %f entspricht der Adresse des Scripts