2009-12-16 6 views
6

Es gibt eine Perl-Bibliothek, auf die ich in Python zugreifen möchte. Wie kann ich es benutzen?Perl in Python?

FYI, die Software ist NCleaner. Ich möchte es aus Python verwenden, um eine HTML-Zeichenfolge in Text umzuwandeln. (Ja, ich weiß über aaronsw Python html2text. NCleaner ist besser, weil es Boiler-Platte entfernt.)

Ich möchte nicht das Perl-Programm als Skript ausführen und wiederholt aufrufen, weil es eine teure Initiale hat Laden Sie Zeit und ich rufe es oft an.

+0

Haben Sie darüber nachgedacht, ein Perl-Programm zu schreiben und es über die Befehlszeile über Python aufzurufen? –

+2

Ich möchte das Perl-Programm nicht als Skript ausführen und es wiederholt aufrufen, da es eine teure Anfangsladezeit hat und ich es oft anrufe. –

+1

Das Ausführen als ein persistenter Prozess ist auch nicht völlig unvernünftig ... – hobbs

Antwort

12

pyperl bietet Perl Einbettung für Python, aber ehrlich gesagt ist es nicht die Art, wie ich gehen würde. Ich gebe Robotos Vorschlag als zweites an - schreibe ein Skript, das NCleaner ausführt (entweder von stdin nach stdout, oder arbeite an temporären Dateien, je nachdem, was besser ist), und führe es als Subprozess aus.

Oder, da ich von der NCleaner Seite sehe, dass es eine C-Implementierung hat, verwenden Sie alle Möglichkeiten Python für die Bindung an C-Code und schreiben ein Python-Modul, das die NCleaner C-Implementierung umschließt. Dann wird in Zukunft die Antwort auf den Aufruf von NCleaner aus Python lauten: "Hier, benutze dieses Modul".

Fußnote: Inline::Python ist besser als Code pyperl, und ich würde vorschlagen, dass stattdessen verwenden, aber es unterstützt nur Python mit Rückruf zu Perl, wenn Python von Perl in erster Linie aufgerufen wird - die Fähigkeit, Perl einbetten in Python wird als mögliches zukünftiges Feature aufgeführt, aber seit 2001 ist es so, also halte nicht den Atem an.