pipe_srv.pl --help | --version
pipe_srv.pl [ --verbose... | --no_verbose ]
[--base BASE] [--req REQ] [--resp RESP] [--trname TRNAME] [--trname ERRSLEEP]
Dieses Programm kommuniziert über benannte Pipes mit anderen Prozessen und stellt die Funktionen eines Übersetzers (Herbaer::Translate, Translate.pm (Quelltext)) zur Verfügung.
Eine Anfrage erfolgt in einer Zeile über die benannte Pipe REQ. Die Anfrage wird durch den Doppelpunkt : in Teile (Methodenname und Argumente) zerlegt. Die Anwort erfolgt ebenfalls in einer Zeile über die benannte Pipe RESP.
In den Teilen einer Anfrage oder in der Antwort müssen das Zeilenendezeichen und der Doppelpunkt ersetzt („geschützt”) werden. Zunächst wird das Zeichen \ („Rückschrägstrich”) durch \\ ersetzt. Das Zeichen : wird durch \c, das Zeilenendezeichen durch \n ersetzt.
Die erste Komponente (Zeichen bis zum ersten Doppelpunkt oder bis zum Zeilenende) ist der Name einer Methode des Übersetzers oder eines Befehls für dieses Steuerprogramm. Abhängig vom Namen können oder müssen ein oder mehrere Argumente (durch einen Doppelpunkt vom vorhergehende Text abgegrenzte Zeichenketten) folgen. Die Anfragen werden (normalerweise) vom Perl-Modul Herbaer::Translate::Pipe, Datei Pipe.pm (Quelltext), gesendet. Die möglichen Anfragen sind:
trname:TRNAMEDieser Befehl setzt einen neuen Übersetzernamen. Der Konstruktor Herbaer::Translate::new wird mit der Zeichenkette NAME als Argument aufgerufen, wenn ein Übersetzer benötigt wird. Das Übersetzer-Objekt wird erst dann erzeugt, wenn es benötigt wird, also bei den Anforderungen translate und learn. Wenn NAME vom bisherigen Namen abweicht und ein Übersetzer-Objekt existiert, dann wird die Methode finish aufgerufen und das Übersetzer-Objekt freigegeben.
translate:TEXT:SRL:TGLDie Anfrage ruft die Methode translate des Übersetzers auf. Der Text TEXT wird aus der Sprache SRL in die Sprache TGL übersetzt. Die Antwort ist der übersetzte Text oder die leere Zeichenkette, falls der Übersetzer den Text nicht übersetzen kann. Falls nötig, wird der Übersetzer neu angelegt.
learn:TEXT:SRL:TGL:TRTEXTDiese Anfrage ruft die Methode learn des Übersetzers auf. Der Übersetzer wird bei Bedarf angelegt. Er lernt, dass die Übersetzung des Textes TEXT aus der Sprache SRL in die Sprache TGL der Text TRTEXT ist. Die Antwort ist OK, es sei denn, der Übersetzer kann nicht angelegt werden. In diesem Fall ist die Antwort ERROR no translator.
finishWenn ein Übersetzer-Objekt existiert, wird dessen Methode finish aufgerufen. Der Übersetzer kann dann (z.B.) die neu gelernten Übersetzungen dauerhaft speichern. Die Antwort ist OK. Falls kein Übersetzer-Objekt existiert, ist die Antwort WARNING no translator.
translator_nameWenn ein Übersetzer-Objekt existiert, wird dessen Methode translator_name aufgerufen. Die Antwort ist die Zeichenfolge OK , wobei der Platzhalter TRANSLATOR_NAMETRANSLATOR_NAME für das Ergibnis der Methode translator_name steht. Falls kein Übersetzer-Objekt existiert, ist die Antwort WARNING no translator.
stopDie Anfrage ist ein Befehl an diesen Dienst-Prozess, sich zu beenden. Wenn ein Übersetzer-Objekt existiert, wird dessen Methode finish aufgerufen.
Diese Anfrage wird normalerweise vom Programm pipe_srv_stop.pl (Quelltext) gesendet.
verboseErhöht den Umfang der Meldungen dieses Prozesses nach STDERR. Diese Anfrage entspricht der Befehlszeilen-Option --verbose.
silentUnterbindet Meldungen des MAIN-Moduls nach STDERR. Diese Anfrage entspricht der Befehlszeilen-Option --no_verbose.
Die Werte der Platzhalter BASE, REQ, RESP und TRNAME können die Platzhalter , ${base}, ${req}, ${resp} und ${trname} für die Werte der (anderen) Platzhalter enthalten. Zum Einsetzen der Platzhalterwerte dient das Modul ${errsleep}Herber::Replace (Replace.pm (Quelltext)).
--helpGibt eine kurze Hilfe mit den aktuellen Einstellungen aus
--versionGibt kurze Hinweise zum Programm und die Version aus.
--verboseMeldungen über den Ablauf, alle Anfragen und die Antworten werden auch nach STDERR ausgegeben.
--no_verboseUnterdrückt die Ausgabe von Meldungen nach STDERR. Die Optionen --verbose und --no_verbose werden der Reihe nach ausgewertet.
--base BASEDie Werte der Platzhalter REQ, RESP und TRNAME können Die Zeichenfolge enthalten. Die Zeichenfolgen ${base} wird durch den Wert von ${base}BASE ersetzt.
--req REQREQ ist der Dateipfad der benannten Pipe, über die in UTF-8-Kodierung die Anfragen gestellt werden. Das Verzeichnis muss existieren.
--resp RESPRESP ist der Dateipfad der benannten Pipe, über die in UTF-8-Kodierung die Antworten gesendet werden. Das Verzeichnis muss existierten.
--trname TRNAMETRNAME ist der Name des Übersetzers, der gestartet wird, wenn eine translate-Anforderung vor der ersten trname-Anforderung erfolgt.
--errsleep ERRSLEEPWenn eine Anfrage nicht gelesen werden kann, wartet der Übersetzerprozess ERRSLEEP Sekunden, bevor er wieder versucht, eine Anfrage zu lesen.
Das Programm ist mit Perl Version 5.10.1 entwickelt. Es benutzt die folgenden Module:
Herbaer::ReadargsDie Funktionen read_args aus diesem Modul verarbeitet die Befehlszeilenargumente, die Funktion print_message_with_values gibt die Hilfe mit den aktuellen Einstellungen aus.
Das Modul ist im Zusammenhang mit den Kalendern beschrieben.
Herbaer::Replace (Datei Replace.pm (Quelltext))Die Funktion replace ersetzt Platzhalter.
Herbaer::Translate (Datei Translate.pm (Quelltext))Die Methode new liefert den Übersetzer.