我正在寻找Java中的Perl实现。类似Jython的东西是用于Python的。我找到了PLJava,但它同时需要安装JVM和Perl编译器。我需要一些不需要Perl编译器的东西。
我需要在Java类中运行一些Perl代码。
最新情况:
发布于 2009-03-06 18:46:31
Jython并不完全兼容CPython (或者您更愿意称其为原始的C++ Python解释器),但是无论哪种语言规范不同,都是一个bug。不幸的是,Perl 5要复杂得多,根本没有任何正式的语言规范--实际上定义为“perl可执行文件是做什么的”--所以除了Perl 5解释器之外,没有其他实现的Perl 5语言。很不幸但那已经是历史了。Perl 6确实有一个语言规范和多个(不完整)实现,但这对您不太可能有用。
PLJava试图实现您想做的事情,从Java调用Perl。它通过连接到libperl的JNI (将本机代码填充到Java)来实现这一点。然而,自2004年以来,它一直没有更新,我不知道它运行得有多好。
编辑
我以前从未见过内联::Java::PerlInterpreter --不幸的是,它似乎无法与我的系统Perl一起工作。
发布于 2011-03-31 21:01:28
更新:还有另一个可行的选择: Jerl。Jerl使用NestedVM将微Perl解释器转换为Java字节码。从这个意义上说,Jerl几乎是Perl的Java实现。不过,我还没有测试过它,所以我认为在比赛中会有损失是合理的。不过,这是一个值得调查的解决方案。Jerl托管在这里:https://code.google.com/p/jerl/。
可悲的是,没有,至少不是一个完整和可用的。Perl是一种很难移植到其他VM的语言,主要是因为它的高度动态性,以及与多年来perl语言的发展有关的历史原因;在我看来,关于perl可解析性的理论问题是次要的。Perl没有正式的规范或正式的语法: Perl实现是Perl自己的正式规范。这意味着,要编写Perl的替代实现,就必须深入了解当前实现的内部结构,这显然是开发这样一个项目的一个巨大障碍。下面是将Perl移植到其他VM的真正困难所在。此外,Perl的动态特性还带来了与Java虚拟机上高效实现相关的其他技术问题,而Java虚拟机是为支持静态类型化语言而设计的。有一些类似的努力,例如:http://www.ebb.org/perljvm/。这里引用了一个较新的例子:http://use.perl.org/~Ovid/journal/38837。这两种方法在某种程度上都被抛弃了,这并不是因为不能做到这一点,而是因为所需的努力对于一个研究/爱好项目来说太大了。一个新的有趣的选择,正在稳步进行是语言-P由马蒂亚巴邦:http://search.cpan.org/dist/Language-P/。它是Perl在NET上的一个实现。项目的实施仍然不完整,但我知道,项目背后的人是一个非常坚持不懈的人,而且项目一直在缓慢而稳定地向前推进。也许CLR上的Perl将是第一位的。:D
发布于 2009-03-06 18:08:12
看看睡眠
是一种用于Java平台的多范式脚本语言。 易于使用Perl和Objective启发语法学习。 使用小包大小(~250)快速执行脚本 擅长数据操作、组件集成和分布式通信。 无缝地使用Java对象和第三方库
https://stackoverflow.com/questions/619822
复制相似问题