将Perl移植到Python

roo*_*ook 9 python perl

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

mob*_*mob 17

在浏览要移植的代码时,请准备好一个短语.

  • 感谢您实际回答我的问题,而不是告诉我为什么我不应该/不能这样做. (5认同)

Ign*_*ams 6

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


gho*_*g74 5

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

如果你有兴趣,你可以看看这本书 也感兴趣,Pleac

  • "Perl大量使用正则表达式,但是,在Python中,字符串操作非常简单,大部分时间都不需要正则表达式"?真的吗? (8认同)
  • 看看PLEAC的东西,我们在这里得到的是一种技术从一种语言转换为另一种语言导致另一种看起来很糟糕的情况.例如,它在Perl中很少用于逐个字符.为什么?首先,它是一个痛苦的屁股.一个公平的警察.另一方面,通常使用正则表达式可以更快,更轻松地完成.人们可以颠倒OP的陈述,并说"在Perl中,正则表达式非常容易,大部分时间都不需要其他字符串操作".无论如何,OP的情绪是正确的.你在Perl中做的事情与在Python中做的不同,所以死记硬背翻译会产生令人讨厌的代码. (4认同)
  • python中的字符串操作似乎很容易的唯一原因是因为更复杂的字符串操作更难,所以人们通常不这样做. (3认同)
  • 我不太清楚Python对它与Perl,buuuuuut的差异进行评论......作为一般规则,"我不能解释答案,除非你已经足够了解我不必解释它"是一个警察的答案是"我真的不知道我在说什么".任何你无法用广义术语向外行人解释的话题都是你自己并不完全了解的话题. (3认同)

Eri*_*got 5

另一种方法是您可以重用现有的 Perl 代码并用新的 Python 代码对其进行补充。

一种可能适合您的方法是使用perlPython 模块,它允许您在 Python 中执行 Perl 代码

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


vHa*_*rvi 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