我想知道将perl转换为python是否有任何提示或技巧。如果有像python的2to3这样的脚本会很好。或者也许是一些兼容性库。它不一定是完整的,任何有助于加快这个过程的东西都会有所帮助。
答案 0 :(得分:17)
在浏览要移植的代码时,请保持phrasebook方便。
答案 1 :(得分:6)
在Perl中有很多方法可以做同样的事情,编写任何类型的交叉编译器都会......最多只是痛苦。手动重建(不只是翻译)程序。
答案 2 :(得分:5)
将Perl转换为Python的最佳“工具”仍然是你自己:)。从Python docs学习Python的语法及其工作原理。然后手动进行转换。例如,Perl大量使用正则表达式,但是,在Python中,字符串操作非常简单,大部分时间都不需要正则表达式。转换器如何事先知道?在Perl中还有很多方法可以做,所以转换器如何知道Python等价物的最佳效果?因此,手动转换仍然是最好的方式
答案 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,反之亦然。