in reply to Storing/parsing perl data structure in/from a file

this prevents information loss but results into array of arrays

use strict; use warnings; use Data::Dump qw/pp/; my $data_str= do { local $/;<DATA>}; $data_str=~ tr/{}/[]/; print $data_str; my $h; eval "\$h =$data_str"; pp $h; __DATA__ { alpha => { beta => { gamma => "theta", delta => "lambda", }, beta => { gamma => "zeta", }, }, }

Output:

[ alpha => [ beta => [ gamma => "theta", delta => "lambda", ], beta => [ gamma => "zeta", ], ], ] [ "alpha", [ "beta", ["gamma", "theta", "delta", "lambda"], "beta", ["gamma", "zeta"], ], ]

now you can parse the data and tranform it to the structure you want. Note that I needed to quote the barewords in your original example!

Cheers Rolf

( addicted to the Perl Programming Language)

UPDATE

If you just need a compact format, why don't you use YAML?

these are equivalent:

#YAML --- - alpha: - beta: - gamma: - theta - delta: - lambda - beta: - gamma: - zeta # PERL AoH³ [ { alpha => [ { beta => [{ gamma => ["theta"] }, { delta => ["lambda"] }] +}, { beta => [{ gamma => ["zeta"] }] }, ], }, ]