#!/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.
|
|