in reply to XML::Simple - Make arrays out of class attribute

If you want to have more control over the generated data structure, try XML::Rules. In this case something like:

use strict; use XML::Rules; my $parser = XML::Rules->new( normalisespaces => 1, rules => { div => sub { if (exists $_[1]->{class}) { my $class = delete $_[1]->{class}; return '@'.$class => $_[1]; } else { return $_[0] => $_[1]; } } }, ); my $data = $parser->parse(\*DATA); use Data::Dumper; print Dumper($data); __DATA__ <div id="main"> <div class="A"> ... </div> <div class="A"> ... </div> <div class="A"> ... </div> <div class="B"> ... </div> <div class="B"> ... </div> <div class="B"> ... </div> </div>