use XML::Simple; my $struct = XMLin( \*DATA ); print XMLout($struct, noattr => 1 ); __DATA__ hello1 hello2 hello3 #### aaa somestring hello1 value hello2 bbb hello3 #### use Data::Dumper; use strict; use XML::Twig; my $xml_twig = XML::Twig->new( pretty_print => 'indented', NoLWP => 1, discard_spaces => 1, ); $xml_twig->parse ( \*DATA ) || die "\nError parsing data $@\n"; my $struct=$xml_twig->simplify( noattr => 1 ); print Dumper($struct); __DATA__ hello1 hello2 hello3 #### $VAR1 = { 'level1' => { 'value' => 'hello1' }, 'level2' => { 'value' => 'hello2' }, 'level3' => { 'value' => 'hello3' } };