我如何使用Python的Perl模块?

时间:2010-10-23 03:36:35

标签: python perl

存在一个Perl模块,为我的Python应用程序提供了完美的功能。 我有什么方法可以利用它吗? (这是复杂,我需要一个月才能移植它)

我不想为每次使用产生子进程,因为我需要它几十万次(它是一种特定类型的数据解析器)。

感谢您的建议。

编辑:要求提供模块。这是Mail::DeliveryStatus::BounceParser。它将邮件传递状态通知与可能指示退回邮件的字符串列表进行匹配。 (它通过大量的正则表达式以及其他测试来运行DSN正文/标题。这是一个非常棒的模块。)

4 个答案:

答案 0 :(得分:5)

我不确定这是否仍然有效,但您可能会感兴趣 PyPerl

仍然应该支持python中的大多数数据解析器。如果您可以指向您正在查看的解析器,那就太好了。

或者,您可以使用该perl模块创建一个完整的进程,并使用IPC,套接字机制来传递来自python和perl进程的数据和结果。

答案 1 :(得分:4)

我知道您可以在Perl中使用Python Inline::Python,但这不是您的问题。也许Python中有类似的功能。也许像perlmodule

答案 2 :(得分:2)

我使用HTTP :: Server :: Simple之类的东西来创建本地Web服务。然后你只需对此进行查询。它仍然是一个外部过程,但它只是一个。

答案 3 :(得分:-3)

  

我不想为每次使用生成子进程,因为我需要它几十万次(它是一种特定类型的数据解析器)。

糟糕的政策。基本的Linux shell一直都在进行这种过程。避免流程产生是一个很大的限制。

但是,你可以轻而易举地做到这一点。

python prepare_data.py | perl my_magic_module.pl | python whatever_else.py

将魔术模块包装在一个简单的perl脚本中,该脚本从stdin读取,执行神奇的操作并写入stdout。

将Python分成两部分:在调用perl之前完成的部分和在调用perl之后完成的部分。

组装一个高性能管道,(a)同时完成所有三个步骤,(b)不分叉很多进程。

BTW将使用您拥有的每个核心。