Damit nicht zu viel Zeit benötigt wird, Übersetzer-Prozesse zu starten und zu beenden, kann dieses Modul mit einem „persistenten” Übersetzerprozess. über benannte Pipes kommunizieren. Das Programm pipe_srv.pl (Quelltext) startet den Übersetzerprozess, das Programm pipe_srv_stop.pl (Quelltext) beendet den Übersetzerprozess.
Die Methode _send_request dieses Moduls Herbaer::Translate::Pipe (Datei Pipe.pm) sendet einen einzeiligen Befehl an den Übersetzer über die Pipe und liest die Antwort aus der Pipe BASIS/request. Die Parameter einer Methode entsprechen Feldern, die durch einen Doppelpunkt getrennt werden. Der Doppelpunkt und das Zeilenendezeichen innerhalb von Parameterwerten werden daher anders kodiert („geschützt”). Dazu dient die Funktion BASIS/response_encode. Die Funktion _decode macht die Kodierung durch _encode rückgängig.
$translator = Herbaer::Translate::Pipe->new ($basis, $trname, $debug)Ergibt ein neues Übersetzer-Objekt. Diese Funktion wird normalerweise nicht direkt aufgerufen, sondern von Herbaer::Translate::new (s. Translate.pm (Quelltext)).
Der Dateipfad für eine Anfrage an den Übersetzerprozess ist , der Dateipfad der Antwort ist $base/request.$base/response
$trname ist die Kennung des Übersetzers, den der Übersetzerprozess verwenden soll. Dem Übersetzerprozess wird die Anfrage trname: gesendet.$trname
Ein logisch wahrer Wert des optionalen Parameters $debug führt zu Meldungen nach STDERR.
$translator->translate ($text, $quellsprache, $zielsprache)Sendet die Anfrage translate: an den Übersetzer. Der sendet die kodierte Übersetzung als Antwort.$text:$quellsprache:$zielsprache
$translator->learn ($text, $quellsprache, $zielsprache, $uebersetzung)Sendet die Anfrage learn: an den Übersetzerprozess und gibt dessen Antwort zurück.$text:$quellsprache:$zielsprache:$uebersetzung
finish ()Sendet die Anfrage finish an den Übersetzer und gibt dessen Antwort zurück.
trname ($trname)Sendet die Anfrage trname: an den Übersetzerprozess und gibt dessen Antwort zurück. Der Übersetzerprozess soll ab jetzt den Übersetzer mit der Kennung $trname$trname verwenden.
translator_name ()Sendet die Anfrage translator_name an den Übersetzerprozess. Wenn dessen Antwort mit der Zeichenfolge OK beginnt, werden diese Zeichenfolge und mögliche weitere Leerzeichen am Anfang der Antwort durch pipe_ ersetzt. Die resultierende Zeichenfolge wird als Ergebnis zurückgegeben. Wenn die Anwort des Übersetzerprosesses nicht mit OK beginnt, wird pipe_error zurückgegeben.
stop ()Sendet die Anfrage stop an den Übersetzerprozess und gibt dessen Antwort zurück. Der Übersetzerprozess soll sich beenden.