#!/usr/bin/perl -w use strict; use warnings; use XML::Simple; use Data::Dumper; my $data = do {local $/;<DATA>}; my $xml = new XML::Simple(keeproot => 2);# this is what you want $xml = XMLin($data); print Dumper($xml), "\n\n"; for my $id (keys %{ $xml->{gene} }) { # print $xml->{gene}{$id}{'label'}, "\n"; # print $xml->{gene_seq}{$id}{'label'}, "\n"; print $xml->{gene}{$id}{gene_seq}{'startpos'}, "\n"; #print "$xml->{'gene'}{'id'}, $xml->{'gene'}{'label'}\n"; } __DATA__ <?xml version="1.0" ?> <many_genes> <gene id = "1" label = "gene_of_interest"> <gene_seq id = "1" startpos = "5999"/> </gene> <gene id = "2" label = "Another_gene_of_interest"> <gene_seq id = "2" startpos = "96819"/> </gene> </many_genes>
yields
$VAR1 = {
          'gene' => {
                      '1' => {
                               'gene_seq' => {
                                               'startpos' => '5999',
                                               'id' => '1'
                                             },
                               'label' => 'gene_of_interest'
                             },
                      '2' => {
                               'gene_seq' => {
                                               'startpos' => '96819',
                                               'id' => '2'
                                             },
                               'label' => 'Another_gene_of_interest'
                             }
                    }
        };


5999
96819
It's like a tree ;)
# you start with
$xml->{gene}->{1}->{gene_seq}->{startpos};
# and you make it variable
$xml->{gene}->{$id}->{gene_seq}->{startpos};
# and its same as
$xml->{gene}{$id}{gene_seq}{startpos};
$$xml{gene}{$id}{gene_seq}{startpos};
$$xml{gene}->{$id}{gene_seq}->{startpos};


MJD says you can't just make shit up and expect the computer to know what you mean, retardo!
** The Third rule of perl club is a statement of fact: pod is sexy.


In reply to Re: Re: Re: Re: (jeffa) Re: XML::Simple by PodMaster
in thread How to access results of XML::Simple? by matth

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.