我有一些用Perl模块编写的函数.我必须在Python中调用这些函数并获取输出.
我已经看到链接 http://en.wikibooks.org/wiki/Python_Programming/Extending_with_Perl.我无法找到他们在Python中导入的Perl模块.
当我尝试在Linux中安装pyperl时,它无法找到它.
我能够运行简单的Perl脚本并获取输出,但我无法调用用Perl编写的函数并获取输出.
使用popen运行Perl解释器,并执行所需的代码.运行Perl时,包括-m MODULE用于加载所需模块的开关并-e EXPRESSION执行所需的功能.例如,此代码在POSIX模块中运行一个函数并获取其(字符串)结果:
>>> os.popen('''
... perl -mPOSIX -e "print POSIX::asctime(localtime)"
... ''').read()
'Sun Jan 19 12:14:50 2014\n'
Run Code Online (Sandbox Code Playgroud)
如果需要在Python和Perl之间传输更多涉及的数据结构,请使用两种语言都支持的中间格式,例如JSON:
>>> import os, json
>>> json.load(os.popen('''
... perl -e '
... use POSIX qw(localtime asctime);
... use JSON qw(to_json);
... my @localtime = localtime(time);
... print to_json({localtime => \@localtime,
... asctime => asctime(@localtime)});
... '
... '''))
{u'localtime': [10, 32, 12, 19, 0, 114, 0, 18, 0],
u'asctime': u'Sun Jan 19 12:32:10 2014\n'}
Run Code Online (Sandbox Code Playgroud)