2012-05-29 72 views
3

我有一個包含一些哈希引用(abc.pl)的perl文件,我想在另一個perl文件中打開此文件,以便我可以使用Json將其轉換爲json XS。當我嘗試打開abc.pl時,perl將其讀爲文本,我無法將其轉換爲json。如何使用Perl讀取外部文件中的perl數據結構

所以,我只是想知道在另一個perl文件中讀取abc.pl的方式,以便正確讀取哈希引用,然後可以轉換爲json。

+0

散列引用不能存在於文件中。請澄清。你的意思是它包含返回散列引用的代碼嗎? – ikegami

+0

該文件包含如下數據結構的組合:abc {z} = {a =>「bc」,d =>「ef」,g => [h => {t =>「ij」}}}; – Paul

+0

我認爲你的意思是'$ abc {z}',在這種情況下,它就是Perl代碼。確保文件以'\%abc'結尾,並且您可以使用friedo的代碼。 – ikegami

回答

4

假設你有一個看起來像這樣的數據文件:

$VAR1 = { 
      'bar' => 2, 
      'baz' => 3, 
      'foo' => 1 
     }; 

您可以評估使用do功能結構。例如,

use strict; 
use warnings; 

use JSON::XS; 

my $data = do 'abc.pl'; 
my $json = encode_json $data; 

print $json; 
+0

感謝名單這個工作在這個例子中...但如果文件中包含這樣 $ VAR1 {VR1} = { '酒吧'=> 2, '巴茲'=> 3, 「富很多複雜的數據結構是什麼'=> 1 }; $ VAR1 {vr2} = { 'bar'=> 2, 'baz'=> 3, 'foo'=> 1 }; 等等 – Paul

+0

然後你可能會想要以某種方式拆分它,並在結果字符串上使用'eval'。 – friedo

+0

thanx ...它會嘗試 – Paul