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)
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"] }] }, ], }, ]
In reply to Re: Storing/parsing perl data structure in/from a file (YAML)
by LanX
in thread Storing/parsing perl data structure in/from a file
by Wilderness
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |