我想知道是否有任何提示或技巧將Perl轉換爲python。如果有像python的2to3這樣的腳本,那將會很好。或者可能有一些兼容性庫。它不一定是完整的,任何有助於加速該過程的東西都會有所幫助。將Perl移植到Python
回答
將Perl轉換爲Python的最佳「工具」仍然是你自己:)。從Python docs瞭解Python的語法以及它的工作原理。然後手動進行轉換。例如,Perl使用正則表達式很多,但是,在Python中,字符串操作非常簡單,大多數情況下,regex是不需要的。轉換器如何預先知道?在Perl中有很多方法可以做,所以轉換器如何知道什麼是最好的與Python等價的?因此,手動轉換仍然是去
「Perl使用正則表達式很多,但是,在Python中,字符串操作非常容易,大多數時候,regex是不需要的」?真的嗎? – AmbroseChapel 2010-04-08 05:29:43
爲什麼python中的字符串操作看起來很容易,唯一的原因是因爲更復雜的字符串操作比較困難,所以人們通常不會。 – Michael 2010-04-08 05:36:51
@Ambrose,除非您有豐富的Python和Perl知識,否則我無法真正回答您,並且可以看到自己的差異。 – ghostdog74 2010-04-08 05:43:17
有在Perl做同樣的事情這麼多的方法編寫任何類型的交叉編譯器都會......痛苦至極。重建(不要只是翻譯)手動程序。
轉換需要編寫一個Perl解析器,語義檢查器和Python代碼生成器。
不實用。 Perl解析器對於Perl團隊來說是很難做到的。你最好使用Perl操作碼或相關模塊將Perl從Perl AST(操作碼)翻譯成Python。
http://perldoc.perl.org/Opcode.html
一些標註不從Perl的映射到Python沒有一些工作。例如,Perl的關閉是不同的。它的正則表達式支持也是如此。
簡而言之,可以手動轉換它,也可以使用一些集成模塊從Perl調用Python,反之亦然。
另一種方法是,您可能可以重新使用現有的Perl代碼並用新的Python代碼對其進行補充。
可能適用於您的一種可能性是使用perl
Python module,它允許您在Python內執行Perl代碼。
另一種方法是讓Perl將輸出作爲簡單的文本/ JSON/YAML文件輸出,並由Python進行解析以供進一步處理。因此,我可以在不改寫它的情況下使用舊版Perl代碼,同時切換到Python。您的里程可能會有所不同,因爲這種「膠合」方法可能對您的需求太慢。當你有很長的計算產生中間結果時,這個「傳遞文件」方法是很好的:你可以用Perl開始計算,然後用Python繼續。
不幸的是我跑進了同一個泡菜,似乎沒有直接的辦法。但是如果你像我一樣熟悉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
Add 1,$ s/{/:/ g 1,$ s /} // g 這可能會給轉換大小寫和循環代碼塊的邊緣:) – 2015-07-06 18:22:39
- 1. 將Ruby移植到Python
- 2. 將JavaScript庫移植到Python
- 3. 將Python移植到D:urllib
- 4. 如何將shell腳本移植到Perl?
- 5. 移植到鐵軌的perl
- 6. 將perl soap應用程序移植到python
- 7. 將Python 2 Unicode移植到Python 3
- 8. 將移植函數從Python移植到C++
- 9. 將Python-DocX函數移植到C#
- 10. 將此片段從Matlab移植到Python
- 11. 可以將Flask(Python)移植到Lua嗎?
- 12. 將OpenGL代碼從C++移植到Python
- 13. 如何將Python程序移植到Ruby
- 14. 通過ctypes將C庫移植到Python
- 15. 將Python程序移植到C
- 16. 將應用程序移植到python 3
- 17. Paramiko將被移植到Python 3.x?
- 18. 移植到Python 3問題
- 19. 移植Java代碼到Python
- 20. 從Java移植到Python
- 21. 移植的Lua到Python
- 22. 移植Perl的輸入
- 23. 移植的Python語法2到Python 3
- 24. Cassandra將int移植到bigint
- 25. 將Java移植到AS3
- 26. MONO:將.net移植到Linux。
- 27. 將jQuery移植到CoffeeScript?
- 28. 將ECLiPSe移植到Prolog
- 29. 將ExtJS3移植到ExtJS4
- 30. 將djangorestframework移植到2.X.X
看過這麼多次,雖然你的問題似乎比許多這些類型的問題更合理。 – 2010-04-08 02:47:26
沒有任何提示,但自動轉換腳本會需要Perl可以解析... http://www.jeffreykegler.com/Home/perl-and-undecidability :-) – ig0774 2010-04-08 02:49:34
當然,人們實際上寫的Perl是非常可靠的,並且有很多Perl解析工具可用。不錯,儘管。 – jrockway 2010-04-09 01:47:38