#!/usr/bin/perl -w use strict; use warnings; use XML::Simple; use Data::Dumper; my $data = do {local $/;}; 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__