use XML::DT;
use Data::Dumper;
my $filename = shift;

%handler=(
  '-type' => {
          top_level => 'MAP',      #
          sub_level_1 => 'SEQ',    # of element  (1)
#         name => 'STR',           # the default
#         junk => 'STR',           # the default
          element => 'MAP'   },    # (2)

  '-default'  => sub{$c},
  element     => sub{ $c->{name} = $v{name}; $c},           # (3)
  sub_level_1 => sub{ +{ map { ($_->{name}, $_) } @$c } },  # (4)
);
print Dumper(dt($filename,%handler));


__END__
________notes:    
(1) See also SEQH instead of SEQ

(2) beeing a MAP the attributes and the tagname are deleted => in this case
  we can add a element processing sub  (see (3))

(3) $c is the ref to hash; "name" att is missing but it is available in %v
  In this sub we copied it
# or if you prefer:
#    element    => sub{ +{ %v, %$c}},   #add all atts in %v to $c

(4) we have a list of ref to hash and we want a hash of hash
      for all the elements in @$c
         make a pair with the name value, and the complete element

Um abraco
J.Joao (jj@di.uminho.pt)

In reply to Re: XML::DT and hashes/pointers by Anonymous Monk
in thread XML::DT and hashes/pointers by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.