将Perl移植到Python

时间:2010-04-08 02:44:38

标签: python perl

我想知道将perl转换为python是否有任何提示或技巧。如果有像python的2to3这样的脚本会很好。或者也许是一些兼容性库。它不一定是完整的,任何有助于加快这个过程的东西都会有所帮助。

6 个答案:

答案 0 :(得分:17)

在浏览要移植的代码时,请保持phrasebook方便。

答案 1 :(得分:6)

在Perl中有很多方法可以做同样的事情,编写任何类型的交叉编译器都会......最多只是痛苦。手动重建(只是翻译)程序。

答案 2 :(得分:5)

将Perl转换为Python的最佳“工具”仍然是你自己:)。从Python docs学习Python的语法及其工作原理。然后手动进行转换。例如,Perl大量使用正则表达式,但是,在Python中,字符串操作非常简单,大部分时间都不需要正则表达式。转换器如何事先知道?在Perl中还有很多方法可以做,所以转换器如何知道Python等价物的最佳效果?因此,手动转换仍然是最好的方式

如果您有兴趣,可以查看此book 同样感兴趣,Pleac

答案 3 :(得分:5)

不幸的是,我遇到了同样的泡菜,似乎没有直接的方法去做。但是,如果你像我一样精明,那么你可以很快找到像这样的列表。

只需在名为(或其他)“替换”的文件中键入所有这些,然后打开Perl脚本(首先备份原始脚本)并执行:source path / to / the / substitute。请注意,这绝不是完美的,但可能会给你一个很好的开始方向(希望!)


    1,$s/\$\(.*\) /\1 /g
    1,$s/\$\(.*\)->/\1\./g
    1,$s/->/\./g
    1,$s/\$//g
    1,$s/ eq / \=\= //g
    1,$s/@//g
    1,$s/=>/:/g
    1,$s/use /import /g
    1,$s/::/\./g
    1,$s/||/or/g
    1,$s/&&/and/g
    1,$s/my //g
    1,$s/sub /def /g
    1,$s/ undef/ None/g
    1,$s/%//g
    1,$s/;$//g
    1,$s/\/os.environ/g
    1,$s/defined //g

答案 4 :(得分:3)

另一种方法是,您可以重用现有的Perl代码,并使用新的Python代码补充它。

可能对您有用的一种可能性是使用perl Python module,这允许您在Python中执行Perl代码

另一种方法是让Perl将其输出生成为简单的text / JSON / YAML文件,由Python 解析以进行进一步处理。因此,我可以使用我的传统Perl代码而无需重写它,同时切换到Python。您的里程可能会有所不同,因为这种“粘合”方法可能对您的需求来说太慢了。当您进行长时间计算以产生中间结果时,这种“传递文件”方法很好:您可以在Perl中开始计算,并在Python中继续计算。

答案 5 :(得分:2)

转换需要编写Perl解析器,语义检查器和Python代码生成器。

不实用。 Perl解析器很难让Perl团队做对。你最好使用Perl操作码或相关模块从Perl AST(操作码)转换Perl到Python。

http://perldoc.perl.org/Opcode.html

如果没有一些工作,有些符号不会从Perl映射到Python。例如,Perl的闭包是不同的。它的正则表达式支持也是如此。

简而言之,要么手动转换它,要么使用一些集成模块从Perl调用Python,反之亦然。