Perl-Programm aus Perl-Programm aufrufen
Doris
- perl
0 King^Lully0 Doris
0 Struppi
0 Doris
Hallo,
in SELFHTML habe ich nur etwas über subroutines gefunden.
Wie kann ich aber aus einem Perl-Programm ein weiteres Perl-Programm aufrufen (mit Parameterübergabe und -Rückgabe)?
in SELFHTML habe ich nur etwas über subroutines gefunden.
Wie kann ich aber aus einem Perl-Programm ein weiteres Perl-Programm aufrufen (mit Parameterübergabe und -Rückgabe)?
Mit use oder require, siehe Perl-Doku. (Vermute mal, dass Du Module bilden willst und nicht forken.)
Mit use oder require, siehe Perl-Doku. (Vermute mal, dass Du Module bilden willst und nicht forken.)
Was heißt bitte 'forken'?
Mit use oder require, siehe Perl-Doku. (Vermute mal, dass Du Module bilden willst und nicht forken.)
Was heißt bitte 'forken'?
In etwa sowas:
http://de.wikipedia.org/wiki/Fork_(Unix)
Forken ist aber nicht UNIX-spezifisch. Willst Du, dass eine zweite Perl-Instanz erzeugt wird, die dann synchron oder ansynchron zum Mutterprozess ausgeführt wird (forken) oder möchtest Du Logikverteilung (Module, Klassen, Funktionen auslagern, etc.)? Letzteres ist von mir beantwortet worden.
PS: Wikipedia und Google sind immer erste Wahl, wenn bestimmte Sachverhalte unbekannt sind.
Wie kann ich aber aus einem Perl-Programm ein weiteres Perl-Programm aufrufen (mit Parameterübergabe und -Rückgabe)?
z.b. mit system, aber normalerweise braucht man sowas nicht.
Struppi.
z.b. mit system, aber normalerweise braucht man sowas nicht.
Was braucht man nicht 'system' oder den Aufruf?
Je nach Konstellation sollen an der Stelle x im HP.pl die Routinen in up1.pl bzw. up2.pl durchlaufen werden, dann soll nach x weitergemacht werden.
z.b. mit system, aber normalerweise braucht man sowas nicht.
Was braucht man nicht 'system' oder den Aufruf?
Den Aufruf, in der Regel bindet man andere Perl Module mit require oder use ein.
Je nach Konstellation sollen an der Stelle x im HP.pl die Routinen in up1.pl bzw. up2.pl durchlaufen werden, dann soll nach x weitergemacht werden.
Das klingt nach require
Struppi.
Ich habe inzwischen das SELFHTML-Kapitel zu dem Thema nachgelesen und da gibt es einen Absatz, den ich nicht verstehe:
1. Die Liste @EXPORT kann Namen der Module aufnehmen, die in den Namensraum eines einbindenden Scripts standardmäßig exportiert werden, wenn bei der Einbindung keine spezielle Importliste angegeben ist.
Frage: Und wenn im rufenden Programm ein Parameter dieser EXPORT-Liste angegeben wird?
2. Die Liste @EXPORT_OK nimmt dagegen die Namen auf, die ein einbindendes Script maximal in den eigenen Namensraum übernehmen kann, aber nicht übernehmen muss.
Frage: Was wird im folgenden Beispiel in das Hauptprogramm exportiert?
Hauptprogramm: Test.pl
Fall 1: - nur %FORMULARFELDER?
#!/usr/bin/perl -w
use Testmodul;
Fall 2: - ebenfalls nur %FORMULARFELDER?
#!/usr/bin/perl -w
use Testmodul qw(%Formularfelder);
Fall 3: - %FORMULARFELDER und $Zeitstempel?
#!/usr/bin/perl -w
use Testmodul qw(%Formularfelder $Zeitstempel);
Unterprogramm: Testmodul.pl
package Testmodul;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(%FORMULARFELDER);
@EXPORT_OK = qw($Zeitstempel @Logdaten Besteller_ermitteln);
# eine Funktion namens Besteller_ermitteln
1;
- Die Liste @EXPORT kann Namen der Module aufnehmen, die in den Namensraum eines einbindenden Scripts standardmäßig exportiert werden, wenn bei der Einbindung keine spezielle Importliste angegeben ist.
Frage: Und wenn im rufenden Programm ein Parameter dieser EXPORT-Liste angegeben wird?
Dann wird dieser auch importiert, du kanst aber dern import auch verhindern, in dem du eine leere Liste angibst.
Nur wundert es mich warum du Exporter brauchst? Das paßt nicht ganz zu deiner ursprünglichen Fragestellung
- Die Liste @EXPORT_OK nimmt dagegen die Namen auf, die ein einbindendes Script maximal in den eigenen Namensraum übernehmen kann, aber nicht übernehmen muss.
Frage: Was wird im folgenden Beispiel in das Hauptprogramm exportiert?
Warum probierst du es nicht aus?
Struppi.
Hallo Doris!
Je nach Konstellation sollen an der Stelle x im HP.pl die Routinen in up1.pl bzw. up2.pl durchlaufen werden, dann soll nach x weitergemacht werden.
Hm. Es kann sich als hilfsreich erweisen, Subroutinen, die von verschiedenen Programmen benutzt werden, einfach auszulagern. Ich habe mir eine web_lib.pl erstellt, die zum Beispiel für die Ausgabe des Datums (verschiedene Variablen) zuständig ist, und die binde ich in allen Scripten, die irgendwo eine Datumsausgabe generieren sollen, mittles require ein.
Viele Grüße aus Frankfurt/Main,
Patrick