Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中有Perl实现吗?_Java_Perl - Fatal编程技术网

Java中有Perl实现吗?

Java中有Perl实现吗?,java,perl,Java,Perl,我正在寻找Java中的Perl实现。类似Jython的东西是Python的。 我找到了PLJava,但它需要同时安装JVM和Perl编译器。我需要一些不需要Perl编译器的东西 我需要在Java类中运行一些Perl代码 更新: 我发现我需要的是PLJAVA。有人知道一些教程吗 有人玩过内联::Java模块吗 我也无法安装Inline::Java 看看 是一种用于Java平台的多范例脚本语言 使用Perl和Objective-C语法易于学习 以较小的包大小(~250KB)快速执行脚本 擅长数据操

我正在寻找Java中的Perl实现。类似Jython的东西是Python的。 我找到了PLJava,但它需要同时安装JVM和Perl编译器。我需要一些不需要Perl编译器的东西

我需要在Java类中运行一些Perl代码

更新:

  • 我发现我需要的是PLJAVA。有人知道一些教程吗
  • 有人玩过内联::Java模块吗
  • 我也无法安装Inline::Java
看看

是一种用于Java平台的多范例脚本语言

使用Perl和Objective-C语法易于学习

以较小的包大小(~250KB)快速执行脚本

擅长数据操作、组件集成和分布式通信

无缝地使用Java对象和第三方库


如果您不打算使用Perl编译器,那么您到底在寻找什么


您所说的Java的Perl实现是什么意思?如果你想在你的java程序中嵌入Perl,你需要一个Perl编译器。

Jython并不完全兼容CPython(或者你宁愿称为C++ C++ Python解释器),但是无论是从语言规范中还是在哪里都是一个bug。不幸的是,Perl 5要复杂得多,而且根本没有任何正式的语言规范——这种语言实际上被定义为“Perl的可执行文件做什么”——因此除了Perl 5解释器之外,Perl 5语言没有其他实现。不幸的是,但这是历史。Perl 6确实有一个语言规范和多个(不完整的)实现,但这对您可能没有用处

这是一次尝试,完全按照您的意愿,从Java调用Perl。它是通过JNI(将本机代码填充到Java中)链接到
libperl
来实现的。然而,它自2004年以来就没有更新过,我不知道它的工作情况如何

编辑
我以前没有见过——不幸的是,它似乎不适用于我的系统Perl。

我觉得您遇到的问题是,您没有可用的Perl编译器/解释器,但您需要执行一些Perl代码。不幸的是,我不认为存在类似Jython for Perl的东西。据我所知,唯一能满足您要求的项目是PLJava和JPL。不幸的是,看起来这两个项目都被放弃了


这将是一个很酷的项目,因为我相信有必要这样做。

如果你在目标平台上没有安装Perl,你可以使用PAR,包括模块(或者甚至作为一个可执行文件):

Update:还有其他可行的选项:Jerl。Jerl使用NestedVM将微型Perl解释器翻译成Java字节码。从这个意义上说,Jerl几乎是Perl的Java实现。虽然我还没有测试过它,但预计性能会有所下降是合理的。尽管如此,这是一个值得研究的解决方案。 Jerl托管在这里:


不幸的是,至少不是一个完整和可用的。Perl是一种很难移植到其他虚拟机的语言,主要是因为它的高度动态性,以及与多年来开发该语言有关的历史原因;在我看来,关于perl可分析性的理论问题是次要的。Perl既没有正式规范也没有正式语法:Perl实现是Perl自己的正式规范。这意味着要编写另一种Perl实现,必须熟悉当前实现的内部结构,这显然是开发此类项目的一大障碍。这里是将Perl移植到其他VM的真正困难所在。此外,Perl的动态特性还带来了与Java虚拟机上的高效实现相关的其他技术问题,Java虚拟机被设计为支持静态类型语言。有一些类似的努力,例如:。这里引用了一个较新的例子:。这两个项目在某个时候都被放弃了,不是因为不可行,而是因为对于一个研究/爱好项目来说所需的工作量太大了。一个新的有趣的替代方案是Mattia Barbon的语言-P:。它是Perl在NET clr上的一个实现。实施工作还没有完成,但我知道项目背后的人是一个非常坚持不懈的人,项目一直在缓慢但稳定地向前推进。也许CLR上的Perl将首先出现:D

是Perl 6的JVM实现(与标准Perl有很大不同)。现在有了(它在JVM中运行,但基于microperl编译)。两者都有各自的局限性,但对于大多数用途来说都是强有力的竞争者。

这类似于Perl,但不是perlHi,我需要在Java类中运行一些Perl代码。与使用Jython的Python一样。他说的是Perl代码是动态的,可以在运行时进行编译,所以为了运行Perl代码,你必须有一个Perl解释器。这可能是一个很酷的项目,我认为为了获得最佳效果,所有语言都应该用C实现。特别是像Perl这样复杂的东西,有了它惯用的怪癖和怪癖,它不会在Java下运行。Perl的两层抽象将是最粗糙的。在C++中有Python实现吗?我从没听说过。你是说C吗?我是引用的Jerl解决方案的作者,几年前我甚至将它添加到CPAN()。人们似乎对这个想法没有什么兴趣。在这一点上,我会考虑放弃软件,选择另一种解决方案;或者,如果您有这样的倾向,可以随意选择分叉和/或接管Jerl(尽管自从项目僵化以来,Perl和Java都有了显著的进步)。