2009-12-16 7 views
6

C'è una libreria Perl a cui vorrei accedere da Python. Come posso usarlo?Perl in Python?

FYI, il software è NCleaner. Mi piacerebbe usarlo all'interno di Python per trasformare una stringa HTML in testo. (Sì, so di aaronsw's Python html2text. NCleaner è migliore, perché rimuove il pannello della caldaia.)

Non voglio eseguire il programma Perl come uno script e chiamarlo ripetutamente, perché ha un iniziale costoso caricare il tempo e lo sto chiamando molte volte.

+0

Hai mai pensato di scrivere un programma Perl e di chiamarlo tramite la riga di comando tramite Python? –

+2

Non voglio eseguire il programma Perl come script e chiamarlo ripetutamente, perché ha un tempo di caricamento iniziale costoso e lo chiamo molte volte. –

+1

Eseguirlo come un processo persistente non è del tutto irragionevole ... – hobbs

risposta

12

pyperl fornisce l'incorporamento perl per python, ma onestamente non è il modo in cui vorrei andare. Seguo il suggerimento di Roboto: scrivere uno script che esegua NCleaner (elaborando da stdin a stdout, o lavorando su file temporanei, qualunque sia il più appropriato) ed eseguilo come sottoprocesso.

Oppure, dal momento che vedo dalla pagina NCleaner che ha un'implementazione C, utilizzare le strutture che Python ha per il collegamento al codice C e scrivere un modulo Python che avvolge l'implementazione di NCleaner C. Quindi in futuro la risposta a invocare NCleaner da Python sarà semplicemente "qui, usa questo modulo".

Nota: Inline::Python è il codice meglio di pyperl, e io suggerirei di usare che, invece, ma supporta solo avendo chiamata Python di nuovo a Perl quando Python viene invocato da Perl, in primo luogo - la capacità di incorporare in Perl Python è elencato come una possibile funzione futura, ma è così dal 2001, quindi non trattenere il respiro.