使用
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'
如果你需要在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'}