2016-12-02 79 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