2010-11-25 13 views
1

Ich frage mich, ob es eine Möglichkeit gibt, mit Perl 5-Code automatisch zu interagieren, ohne explizite APIs zu erstellen und über ein Protokoll zu veröffentlichen. Ich möchte diese Frage nicht auf bestimmte Wege beschränken, um das zu erreichen - ich suche nach Ideen.Automatische Interaktion mit Perl-Code

Ruby kann von JVM-basierten Sprachen über JRuby zum Beispiel zugegriffen werden; nativ kompilierte Sprachen sind normalerweise über native Shared-Libs/Standard-Aufrufkonventionen für diese Plattform zugänglich; Andere können die Schnittstelle automatisch aus Code generieren lassen ... Welche Optionen gibt es für Perl?

+0

@Virator: Ich bin mir überhaupt nicht sicher, was das bedeutet. Ihr erster Absatz wird nicht in irgendwelche bekannten Schlitze in meinem Gehirn eingeordnet, und der zweite ist fast so mysteriös. Sprechen Sie über XS-Sachen oder was? – tchrist

+0

@tchrist: Ich möchte auf einen älteren Perl-Code (den ich nicht wirklich anfassen möchte) von einer anderen Sprache zugreifen. Ich hoffe, den Perl-Teil im Laufe der Zeit auslaufen zu lassen. Ich suche nach Möglichkeiten, das zu tun. – viraptor

+1

ehrlich gesagt, Legacy-Perl-Code und verwandelt es in eine API durch Schreiben von kleinen Wrapper drum herum (von einfachen alten Pipe-Daten zu einigen Socket-Kommunikation zu ...) klingt für mich viel einfacher als zu versuchen, Perl und nicht-Perl zu verschmelzen Code auf nativer Ebene. YMMV :) – DVK

Antwort

4

Als eine Option können Sie ein Perl-Interpreter einbetten, wie here oder here gezeigt oder here

+0

Nach dieser Idee fand ich 'pyperl' zu http://search.cpan.org/~gaas/pyperl-1.0/perlmodule.pod - einfache Einbettung von Perl in Python. – viraptor

4

Es Bibliothek Perl ist für die Einbettung in das Programm (siehe perlembed.pod), die automatisch erstellt wird - jede Sprache verwenden kann, es, pyperl für Python, PEAR "Perl" -Erweiterung für PHP, mehrere Versuche, Perl 5 von Perl 6 zu verwenden, mehrere Perl-Versuche von JVM (alles nicht fertig), Perl.NET.

Sie können auch anders gehen, Programm in andere Sprache in Perl einbetten und einfach Perl-Subs aus dem Programm in einer anderen Sprache aufrufen. Main Perl-Programm würde nur aus Ihrem Programm in einer anderen Sprache aufrufen. Es gibt eine große Anzahl von CPAN-Modulen, die andere Sprachen integrieren.

+0

Ich kann eine Menge solcher Projekte sehen, aber es ist manchmal schwer zu erkennen, welche davon "proof of concept" sind und welche ernsthaften Projekte veröffentlicht werden, weil sie tatsächlich irgendwo benutzt und gepflegt werden (wonach ich suche :)) – viraptor

+0

perlembed.pod ist der allererste Link in meiner Antwort, FYI :) (Sie antworten bietet ziemlich gute Details, so bin ich froh, dass Sie es gab, obwohl) – DVK