代码之家  ›  专栏  ›  技术社区  ›  rook

将Perl移植到python[关闭]

  •  9
  • rook  · 技术社区  · 14 年前

    我想知道是否有将Perl转换成Python的技巧。如果有类似于python的脚本就好了 2to3 . 或者是一些兼容库。它不必是完整的,任何有助于加快进程的东西都是有帮助的。

    6 回复  |  直到 9 年前
        1
  •  17
  •   mob    14 年前

    保持一个 phrasebook 当你通过你想要移植的代码的时候很方便。

        2
  •  6
  •   Ignacio Vazquez-Abrams    14 年前

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

        3
  •  5
  •   ghostdog74    14 年前

    将Perl转换为Python的最佳“工具”仍然是您自己。学习python的语法及其工作原理 Python docs . 然后手动进行转换。例如,Perl经常使用regex,但是在Python中,字符串操作非常简单,大多数时候不需要regex。转换器如何事先知道这一点??在Perl中也有很多方法,那么转换器如何知道什么是与Python等效的最佳方法呢?因此,手动转换仍然是最好的方法

    如果你感兴趣,你可以看看这个 book 同样有趣的是, Pleac

        4
  •  5
  •   vHalaharvi    12 年前

    不幸的是,我碰到了同样的泡菜,似乎没有直接的方法。但如果你像我一样精通VIM,你可以很快想出一个像这样的清单。

    只需在名为(或其他)“substitute”的文件中键入所有这些内容,然后打开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
    
    
        5
  •  3
  •   Eric O. Lebigot    9 年前

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

    一种可能对您有用的方法是使用 perl Python module ,允许您 在python中执行perl代码 .

    另一种方法是让Perl生成 输出为简单的文本/json/yaml文件,由python解析。 以便进一步处理。因此,在切换到Python时,我可以使用我的遗留Perl代码而不必重写它。您的里程可能会有所不同,因为这种“粘合”方法可能太慢,不适合您的需要。当您有长时间的计算产生中间结果时,这个“pass-files”方法是很好的:您可以用Perl启动计算,然后用Python继续计算。

        6
  •  2
  •   mrjoltcola    14 年前

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

    不实际。Perl解析器对于Perl团队来说已经足够困难了。最好使用Perl操作码或相关模块将Perl从Perl AST(操作码)转换为python。

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

    如果不做一些工作,一些符号就不能从Perl映射到Python。例如,Perl的闭包是不同的。它的regex支持也是如此。

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