只需在这里的其他一些列表上进行扩展,这些Perl构造在Python中可能非常笨拙(如果可能的话)。
-
动态范围(通过
local
关键字)
-
typeglob操作(多个同名变量)
-
格式(它们都有自己的语法)
-
可变变量上的闭包
-
语用
-
左值子程序(
mysub() = 5;
类型代码
-
源滤波器
-
上下文(list与scalar,以及调用代码的方式
wantarray
)
-
类型强制/动态类型
-
任何使用字符串的程序
eval
这个列表一直持续下去,有人可以尝试在所有类似的构造之间创建一个映射,但最终它会因为一个简单的原因而失败。
无法静态分析Perl。Perl代码中的定义(尤其是begin块中的定义)改变了编译器解释剩余代码的方式。因此,对于非琐碎的程序,从perl=>python进行转换会遇到停止问题。
在程序完成运行之前,无法确切地知道如何编译所有程序,并且理论上可以创建一个Perl程序,该程序每次运行时都会进行不同的编译。这意味着一个Perl程序可以映射到无限多的python程序,正确的方法只有在Perl解释器中运行原始程序之后才能知道。