2016-12-02 48 views
0

我有一个很大的.pm文件,它只包含一个非常大的带有很多子哈希的Perl哈希。我必须将这个哈希加载到Java程序中,对下面的数据进行一些工作和更改,并将其保存回.pm文件中,该文件应该与我开始使用的文件类似。将Perl哈希加载到Java中

现在,我试图通过正则表达式和字符串匹配将其转换为线性,将其转换为XML文档,之后Elementwise将其解析为perl哈希。

这不知何妨,但似乎相当狡猾。是否有更可靠的方法来解析perl散列而不安装perl运行时?

回答

1

你说得很对,它完全是肮脏的。首先,用于XML的正则表达式和字符串是一个可怕的想法,老实说,XML可能不适合这种情况。我建议你考虑JSON。我会惊呆的发现java不能处理JSON,它本质上是一个面向散列和数组的数据结构。

所以你可以毫不夸张地说:

use JSON; 
print to_json ($data_structure, { pretty => 1 }); 

注意 - 它不会序列化的对象的工作,但对于Perl中的哈希/数组/标量型结构,它会工作得很好。

可以使用,然后将其重新导入的Perl:

my $new_data = from_json $string; 
print Dumper $new_data; 

它要么Dumper到一个文件,但给你的要求是多语言前进,只是用原生JSON作为你的“静止的”数据可能是一个更明智的选择。

但是,如果你正在解析Perl代码内java,没有perl解释器?不,那只是疯狂。

+1

我希望也许有一个Perl的Java解释器库,因为我发现无。但你的回答让我更怀疑,有任何 – chenino

+0

我认为这是不可能的,因为'perl'是你正在寻找的“perl解释器”。我无法想象任何人只是因为不想安装'perl' _and_' java'而将Perl重写为java库。 – Sobrique

+0

是的,如果它不必是平台独立的,我会包括一个本地的Perl解析器,因为阅读哈希不需要很多包。那么至少哈希有一个consisten结构,因此解析它并从中读取key和value是有可能的,但是我害怕用户输入错误的书面哈希 – chenino