我正在寻找Java中的Perl实现。像Jython这样的东西适用于Python。 我找到了PLJava但它需要安装JVM和Perl编译器。我需要一些不需要Perl编译器的东西。
我需要在Java类中运行一些Perl代码。
更新
答案 0 :(得分:6)
Jython与CPython(或者你不愿意称之为原始的C ++ Python解释器)并不完全兼容,但是哪里有任何不同于语言规范的错误。不幸的是,Perl 5要复杂得多,并且根本没有任何正式的语言规范 - 这种语言被有效地定义为“perl
可执行文件的作用” - 所以除了Perl 5语言之外没有其他实现来自Perl 5翻译。不幸的是,这是历史。 Perl 6确实有一个语言规范和多个(不完整的)实现,但这对你不太有用。
PLJava试图完全按照自己的意愿行事,从Java调用Perl。它通过链接到libperl
的JNI(将本机代码填充到Java中)来实现。但是,自2004年以来它没有更新,我不知道它有多好。
之前我没有见过Inline::Java::PerlInterpreter - 很遗憾,它似乎不适用于我的系统Perl。
答案 1 :(得分:6)
更新:还有其他选择可行:Jerl。 Jerl使用NestedVM将micro-Perl解释器转换为Java bycode。从这个意义上讲,Jerl几乎是Perl的Java实现。我没有对它进行测试,并且期望性能下降是合理的。尽管如此,这是一个值得研究的解决方案。 Jerl在这里举办:https://code.google.com/p/jerl/。
可悲的是,至少不是一个完整可用的。 Perl是一种难以移植到其他虚拟机的语言,主要是因为它具有高度动态性,并且由于历史原因与多年来语言的开发有关。关于perl可解析性的理论问题,在我看来,是次要的。 Perl没有正式的规范也没有官方语法:Perl实现是Perl自己的正式规范。这意味着要编写Perl的替代实现,必须密切了解当前实现的内部,这显然是这个项目开发的一大障碍。这就是将Perl移植到其他VM的真正困难。另外,Perl的动态特性带来了与Java虚拟机上的高效实现相关的其他技术问题,该虚拟机被设计为支持静态类型语言。例如,有一些像这样的努力:http://www.ebb.org/perljvm/。这里引用了一个较新的:http://use.perl.org/~Ovid/journal/38837。两者都被放弃了,不是因为不可行,而是因为所需的努力对于研究/爱好项目来说太大了。正在稳步推进的一个新的有趣选择是Mattia Barbon的语言-P:http://search.cpan.org/dist/Language-P/。它是NET clr上的Perl实现。实施仍然不完整,但我知道项目背后的人是一个非常执着的人,项目一直在缓慢但稳步前进。也许CLR上的Perl会首先出现。 :d
答案 2 :(得分:1)
查看Sleep
是Java平台的多范例脚本语言
使用Perl和Objective-C启发语法轻松学习
使用小包大小(~250KB)快速执行脚本
擅长数据处理,组件集成和分布式通信
无缝使用Java对象和第三方库
答案 3 :(得分:1)
如果您不打算使用Perl编译器,那么您到底在寻找什么?
Java的Perl实现是什么意思?如果你想在你的Java程序中嵌入Perl,你将需要一个Perl编译器。
答案 4 :(得分:1)
对我来说,你遇到的问题就是你没有可用的Perl编译器/解释器,但是你需要执行一些Perl代码。不幸的是,我不认为Perl存在任何类似Jython的东西。我所知道的唯一可以做你要求的项目是PLJava和JPL。不幸的是,看起来两个项目都被抛弃了。
这将是一个很酷的项目,因为我认为需要这样的东西。
答案 5 :(得分:1)
如果您没有在目标平台上安装perl,则可以使用par包括模块(甚至可以作为可执行文件):http://metacpan.org/pod/PAR
答案 6 :(得分:1)