7

There is a Perl library I would like to access from within Python. How can I use it?

FYI, the software is NCleaner. I would like to use it from within Python to transform an HTML string into text. (Yes, I know about aaronsw's Python html2text. NCleaner is better, because it removes boiler-plate.)

I don't want to run the Perl program as a script and call it repeatedly, because it has an expensive initial load time and I am calling it many times.

4
  • Have you thought about writing a Perl program and calling it via the command-line through Python? Commented Dec 16, 2009 at 20:59
  • 2
    I don't want to run the Perl program as a script and call it repeatedly, because it has an expensive initial load time and I am calling it many times. Commented Dec 16, 2009 at 21:12
  • 1
    Running it as a persistent process isn't totally unreasonable either... Commented Dec 16, 2009 at 21:14
  • @Joseph: I don't understand how running Perl inline with your Python is going to make it that much better than if you were to run a Perl program seperately. I would try it separately since no real inline Perl in Python exists at the moment Commented Dec 17, 2009 at 1:13

1 Answer 1

13

pyperl provides perl embedding for python, but honestly it's not the way I'd go. I second Roboto's suggestion -- write a script that runs NCleaner (either processing from stdin to stdout, or working on temporary files, whichever one is more appropriate), and run it as a subprocess.

Or, since I see from the NCleaner page that it has a C implementation, use whatever facilities Python has for binding to C code and write a Python module that wraps the NCleaner C implementation. Then in the future the answer to invoking NCleaner from Python will just be "here, use this module."

Footnote: Inline::Python is better code than pyperl, and I would suggest using that instead, but it only supports having Python call back to Perl when Python is invoked from Perl in the first place -- the ability to embed Perl into Python is listed as a possible future feature, but it's been so since 2001, so don't hold your breath.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.